2012-02-16 30 views
0

私はゲームとプレイヤーの間に1対多の関係があります。プレーヤーと呼ばれるGames to Playersには関係があります。コアデータ - NSPredicateと多対多関係

ゲーム< - >>プレイヤー

ゲーム実体のプレイヤーと呼ばれる関係を持っています。 プレイヤーには「order」という名前のアトリビュートがあります

リレーションシップを照会する述部は使用できません。ここで私が使用しているコードは次のとおりです。

-(NSArray *)returnPlayerLastAtBat: (int)rosterNo 
    { 
     NSError *error; 

     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity = [NSEntityDescription 
             entityForName:@"Games" inManagedObjectContext:managedObjectContext]; 
     NSPredicate *predicate = [NSPredicate predicateWithFormat: 
            @"(finished = '%d') and (players.order = '%d')",0,rosterNo]; 
     [fetchRequest setEntity:entity]; 
     [fetchRequest setPredicate:predicate]; 

     NSArray* result = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
     [fetchRequest release]; 

return result; 
} 

ない私は私のプロジェクト - 全体の前提で作業することができていますが、この1が立ち往生されていwrong-私がやっているものを確認してください。

+0

私はあなたが述語形式で引用符を必要としないと思う。それが述語を壊すかどうかは分かりませんが、試してみる価値があります。 – mvds

+0

テーブル名は慣例(ゲームやプレーヤーなど)によって単なるものです – MGA

+0

引用符は美学のためのもので、コードには影響しません。 –

答えて

0

this SO questionをご覧ください。 mvdsが言及しているので、%dの前後の引用符を削除してください。

+0

ありがとう、Mattieu。このコードは私のために働いた:NSPredicate *述語= [NSPredicate predicateWithFormat: @ "(終了= '%d')と(ANY players.order = '%d')"、0、rosterNo]; –