1

一連の属性を含むSeasonInfoというエンティティを持つコア データ モデルがあり、その 1 つがyear (int 16) という属性です。 SeasonInfoには、 GameInfoというエンティティとの 1 対多の関係が含まれています(SeasonInfo で定義されている関係名は games と呼ばれます)。

私の入力されたデータベースには、たくさんのシーズン (毎年 1 つ) が含まれています...そして、各シーズンにはゲームのリストがあります - 各シーズンのゲームの束。 SeasonInfo <---->>ゲーム情報

私の TableView コントローラーでは、次を使用して特定の年のSeasonInfoにアクセスします。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"SeasonInfo"      inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

// Set up the cell...
SeasonInfo *info = [seasonInfoArray objectAtIndex:indexPath.row];

//Put the Year as the Main title of the Row
yearLabel.text =[NSString stringWithFormat: @"%@",   info.year];

それはうまくいっているようですが、特定のシーズンのゲームにアクセスする方法がわかりません。このテーブル ビューから特定の年を選択すると、ゲームの NSArray を別のテーブル ビュー コントローラーに渡したいと思います...ビュー間でデータを渡す方法は知っていますが、スケジュール ビューに遷移する前の「gamesArray」。

4

2 に答える 2

1

Core Data で適切にリレーションシップを作成した場合は、そのプロパティによってゲームのリレーションシップにアクセスできます。

そのため、info.games はその SeasonInfo の GameInfo の NSSet を返す必要があります。

于 2013-05-01T06:02:04.757 に答える
0

特定のシーズンのゲームのみを取得する必要がある場合は、取得する前に次のような述語を使用できます (これは int 32 でのみ機能し、文字列形式指定子 (%d) を int16 に必要なものに変更します):

NSPredicate *equalPredicate =[NSPredicate predicateWithFormat:@"year == %d", year]; [fetchRequest setPredicate:equalPredicate];

それを望まず、すべてを収集したい場合は、executeFetchRequest が完了し、正常完了ブロックに入った後に、結果の NSArray * が提供されます。

for (SeasonInfo * seasonInfo in results)
{
    if ([seasonInfo year] == <whatever year you want>)
    {
        //save this seasonInfo for use, this contains the games you're interested in.
    }
}

その後、シーズン内の特定のゲームにアクセスするにはInfo

for (GameInfo * gameInfo in [seasonInfo games])
{
   // Do what's needed with the gameInfo.

}
于 2013-05-02T00:52:25.517 に答える