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

Phi*_*tes 5 iphone core-data objective-c nsfetchedresultscontroller

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

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

sectionNameKeyPath:@"entityB.title"
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助表示赞赏:)

谢谢

Mar*_*rra 5

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

NSSet *titles = [myEntityA valueForKeyPath@"entityB.title"];
Run Code Online (Sandbox Code Playgroud)

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