NSFetchedResultsController和NSPredicate以及节名称

时间:2012-05-04 12:44:40

标签: objective-c core-data nspredicate nsfetchedresultscontroller

我的核心数据模型包含两个实体,这两个实体之间具有多对多的关系。

例如,

Conference <<---->> Speaker

会议可以有很多发言人,一位发言人可以参加很多会议。

我试图使用NSFetchedResultsController,fetchRequest的主要实体是 Speaker

虽然它确实列出了所有发言人,但我试图将该部分作为“会议”名称并列出该部分内的所有发言人。我希望它能让“John”这个名字作为演讲者出现在两个部分中。这意味着他是两次会议的发言人。

这是我正在使用的sectionNameKeyPath:@"conferences.Name"

NSFetchedResultsController *aFetchedResultsController = [[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"conferences.Name"  cacheName:@"fCache"] autorelease];

它有点不起作用,当我使用{TedEx}时,我得到[sectionInfo name]作为章节标题。

另一个问题是,如果我在一个部分(会议)中出现一个发言者,它将不会出现在另一部分中(即使该部分(会议)具有该发言者对象)。

这可能是因为我将sectionName视为一组合并的会议。 TedEx, SXSW作为一个部分。

目标应该是如何挑出sectionNameKeypath来仅获取一个会议并列出每个会议中的所有发言者。也许我应该设置某种谓词?

我有点在这里绑定,这是一个问题吗?我读过有关谓词的内容,但如果你的新核心数据有点难以理解。

1 个答案:

答案 0 :(得分:0)

这与你想要的方式略有不同,我不确定是否有更好的方法来实现它与FRC&amp; sectionNameKeyPath就像你想要或不想,但也许这将起作用:

  1. 而不是提取发言人,只需做一个正常的NSFetchRequest即可 名为NSArray的{​​{1}}。你可以按顺序排序 conferenceName或日期或您需要的任何内容。
  2. 然后,对于您的表格视图,将部分数量设置为conferences
  3. 对于每个部分中的行数,请获取该部分[conferences count]的会议对象,并返回该会议的发言人数。
  4. 要填充单元格数据,只需通过调用[conferences objectAtIndex:section]
  5. 获取Speaker对象