iphone - UITableView 和 Core Data 的多对多关系

标签 iphone objective-c core-data

我遇到了 UITableViews 和多对多关系的问题。

我有两个类,A 和 B,它们都扩展 NSManagedObject 并存在于 Core Data 中。每个与另一个之间都有一对多的关系:

A<<-->>B

我想使用 A 类的对象作为 UITableView 的部分,并将 B 对象集作为 TableView 中的“数据行”。这可能吗?实现这一目标的最佳方法是什么?最好我想使用 NSFetchedResultsController 来管理 UITableView 呈现的数据,但到目前为止我还无法想出有效的谓词和部分名称键路径。

最佳答案

您不能使用获取结果 Controller 来执行此操作。

如果 A 对象是节名称,并且每个 B 对象都有许多 A 关系,则每个 B可以在表的不同部分多次出现。核心数据实际上是围绕唯一对象的想法建立的,并且 TableView 的所有样板代码都假设每一行代表一个唯一对象。在这种情况下,即使计算行数也会很困难,并且无法设置sectionNameKeyPath,因为它在任何时候都可能有多个值。

您需要手动配置这一切。您必须获取 A 对象,然后设置部分标题,然后您必须获取每个 A.bObjs 并对每个对象中的行进行计数和排序部分完全单独。删除现有的 B 对象可能会很困难,因为它可能会同时触发多行的删除。

我强烈建议您重新考虑您的设计。节和节标题不应表示托管对象,而是基于行对象的属性之一由行表示的托管对象的分组。这里您真正想要的是主从 View 层次结构。顶部表格 View 将显示所有 A 对象。当选择一行时,它会加载第二个表格 View ,其中显示与所选 A 对象相关的所有 B 对象。

关于iphone - UITableView 和 Core Data 的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331200/

相关文章:

iphone - iOS 5崩溃@ [self.navigationController pushViewController:vcSummary动画:是];

ios - 对象索引崩溃

iphone - 事件指示器无法正常工作

ios - 如何将参数值传递给自定义 NSLOG

ios - 使用 SQLite iOS 更改数据模型

ios - 如何停止自动旋转?

iphone - UIPageControl ,白点未突出显示

ios - 如何使用 iPhone Native UI 在联系人中添加联系人

ios - 使用 Restkit MainQueueManagedObjectContext 的奇怪崩溃 - EXC_BAD_ACCESS

swift - 保存上下文后,在核心数据中快速设置关系