如何在 NSFetchedResultsController 中使用多对多关系?
Posted
技术标签:
【中文标题】如何在 NSFetchedResultsController 中使用多对多关系?【英文标题】:How to use many to many relationship in NSFetchedResultsController? 【发布时间】:2011-03-30 13:47:54 【问题描述】:我有两个实体组和联系人。一个联系人可以属于多个群组,一个群组有多个联系人。所以我创建了多对多的关系。像这样:
Group Contact
attribute attribute
gname name
gid gender
relationship relationship
cnt<<--------->>grp
我想在 UITableView 中显示所有联系人,其中有很多部分,每个部分有很多行。像这样:
GroupA
Contact1
Contact2
Contact3
GroupB
Contact1
Contact3
GroupC
Contact2
Contact3
我的问题是如何创建 NSFetchedResultsController 来实现这一点?我可以使用属性将 UITableView 划分为多个部分。我曾尝试使用简单对多的关系来划分它,但失败了,至于多对多,我...
如果我有一个名为“GroupD”的组,该组没有联系人属于。所以联系人实体没有任何grp属性包含“GroupD”的行,那么我只有三个部分。我希望我的 UITableView 是这样的:
GroupA
Contact1
Contact2
Contact3
GroupB
Contact1
Contact3
GroupC
Contact2
Contact3
GroupD
但我确实得到了:
GroupA
Contact1
Contact2
Contact3
GroupB
Contact1
Contact3
GroupC
Contact2
Contact3
我认为最大的问题是我创建 NSFetchedResultsController 的方式。
请帮忙。
任何回复将不胜感激,在此先感谢。
【问题讨论】:
【参考方案1】:我认为 UITableView 不可能显示没有单元格的部分。如果你能接受这个事实,那么你的 NSFetchResultController 应该如下所示。
NSFetchRequest *fetchRequest = ....
NSEntityDescription *entity = .... @"Contact" ....
fetchRequest.entity = entity;
[NSFetchResultsController alloc] initWithFetchRequest:fetchRequest
...
sectionNameKeyPath:@"grp"
...
【讨论】:
以上是关于如何在 NSFetchedResultsController 中使用多对多关系?的主要内容,如果未能解决你的问题,请参考以下文章
又一个 NSInternalInconsistencyException,但使用 NSFetchedResultsController
更新相关 NSManagedObject 时更新 UITableView
NSFetchedResultsController:具有相同键的两个排序描述符不起作用。一个降序用于部分,另一个升序用于行