NSFetchedResultsController和NSPredicate以及部分名称

我有两个具有多对多关系的实体的核心数据模型。

例如,

Conference <<---->> Speaker

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

我试图使用NSFetchedResultsController fetchRequest的主要实体是扬声器

尽管它确实列出了所有扬声器,但我试图将该部分作为“会议”名称并列出该部分中的所有扬声器。 我想要它,以便作为演讲者的名字“约翰”将出现在两个部分。 这意味着他是两次会议的发言人。

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

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

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

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

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

一些目标应该是选择sectionNameKeypath来仅提取一个会议并列出每个会议中的所有发言人。 也许我应该设置某种谓词?

我有点在这里绑定,是一个问题的方法? 我已经阅读了关于Predicates的内容,但是如果你的新核心数据很难理解。


这与你正在考虑的方式有点不同,而且我不确定是否有更好的方法来使用FRC&sectionNameKeyPath来完成它,就像你想要的那样,但是这可能会起作用:

  • 而不是抓取扬声器,只是做一个正常的NSFetchRequest来获得一个名为conferencesNSArray 。 你可以按照会议名称或日期或任何你需要的方式进行排序。
  • 然后为你的表格视图设置[conferences count]部分的[conferences count]
  • 对于每个部分中的行数,获取该部分的会议对象[conferences objectAtIndex:section] ,并返回该会议的发言者数量。
  • 要填充单元格数据,只需通过调用获取Speaker对象: [[conferences objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
  • 链接地址: http://www.djcxy.com/p/36165.html

    上一篇: NSFetchedResultsController and NSPredicate and a section name

    下一篇: iphone SDK: Core Data, how to sort sections in an NSFetchedResultsController?