0

我有两个实体的核心数据模型,它们彼此之间存在多对多关系。

例如,

Conference <<---->> Speaker

一个会议可以有多个演讲者,一个演讲者可以参加多个会议。

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

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

这是我正在使用的 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 以仅获取一个会议并列出每个会议中的所有发言人。也许我应该设置某种谓词?

我在这里有点束缚,这种方法有问题吗?我读过关于谓词的文章,但如果你是核心数据的新手,它有点难以理解。

4

1 回答 1

0

这与您考虑的方式略有不同,我不确定是否有更好的方法可以使用您想要的 FRC 和 sectionNameKeyPath 来完成它,但也许这会起作用:

  1. 无需获取 Speakers,只需执行正常NSFetchRequest操作即可获取被NSArray调用的conferences. 您可以按会议名称或日期或您需要的任何内容对其进行排序。
  2. 然后为您的表格视图将部分的数量设置为[conferences count].
  3. 对于每个部分的行数,获取该部分的会议对象[conferences objectAtIndex:section],并返回该会议的发言人数。
  4. 要填充单元格数据,只需通过调用获取 Speaker 对象:[[conferences objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
于 2012-05-04T20:53:41.307 回答