2013-05-01 111 views
1

我有实体的核心数据模型称为SeasonInfo包含了一堆的属性,其中之一是一个属性叫做(INT 16)。 SeasonInfo包含一个一对多的关系,名为GameInfo(在SeasonInfo中定义的关系名称被称为游戏)。抓取一对多的关系数据和核心数据

我填充的数据库包含一堆季节(每年一个)...然后每个季节都有一个游戏列表 - 每个季节一堆游戏。 SeasonInfo < ---- >>的GameInfo

在我的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游戏传递给另一个Table View控制器......我知道如何在视图之间传递数据,我无法弄清楚如何填充在我转换到计划视图之前的“游戏阵列”。

回答

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. 
    } 
} 

之后,得到在seasonInfo

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

} 
+0

感谢您的帮助 – 2013-05-08 00:40:55

1

如果您已经在核心数据中正确创建了关系,那么您可以通过它的属性访问游戏关系。

因此,info.games应为该SeasonInfo返回一个GameInfo的NSSet。

+0

感谢您的帮助特定的游戏... ...能得到这方面的工作,此代码:NSSet中* gameSet = info.games; – 2013-05-08 00:40:13