如何处理与NSFetchedResultsController的多对多关系?

时间:2010-04-19 21:06:32

标签: iphone objective-c core-data nsfetchedresultscontroller

好的,所以我的数据模型中有两个实体(比如entityA和entityB),这两个实体之间的关系都是多对多的。

我已经设置了一个NSFetchedResultsController来获取一堆entityA。现在,我正在尝试将tableview的节名称作为entityB的标题。

sectionNameKeyPath:@"entityB.title"

现在这会导致一个问题,即从该关系返回的部分名称似乎是({title1})或({title1,title2 ... titleN}),这显然取决于涉及多少个不同的entityB。这在tableview中看起来不太好,并且不会按照我的意愿对对象进行分组。

我想要的是每个entityB标题的一个部分,其中entityA出现在每个部分下,必要时在多个部分下面。我不知道我应该如何实现这一点,我是否需要更新谓词以使实体多次出现,或者是否需要更新section和header函数来进行一些处理,因为控制器循环通过对象。

感谢任何帮助:)

谢谢

1 个答案:

答案 0 :(得分:5)

你会得到它,因为调用@“entityB.title”将返回一组数组。这就是你所看到的,因为它正在转化为:

NSSet *titles = [myEntityA valueForKeyPath@"entityB.title"];

要解决此问题,您需要反转NSFetchedResultsController,以便通过 EntityB对象获取EntityA对象。然后你的sectionKeyPath(以及你的主要排序)将只针对@“title”。