具有核心数据的一对多表格视图

Posted

技术标签:

【中文标题】具有核心数据的一对多表格视图【英文标题】:One to Many Tableviews with Core Data 【发布时间】:2009-11-29 16:12:03 【问题描述】:

虽然 ADC 中有父/子(一对多而不是继承)核心数据的示例代码,但子关系的管理只需将所有相关对象加载到一个集合中,然后加载到一个数组中。我想到的应用程序可能每个父对象都有大量相关数据,因此我想在子端使用 NSFetchedResultsController 。除了 controllerDidChangeContent 委托回调之外,我这样做的尝试已经奏效。在主 tableviewcontroller 上使用一个获取结果控制器,在多端使用另一个,并且 aFetchedResultsController.delegate = self;委托回调是针对随机对象触发的 - 每当更新基础数据时,从无效选择器“controllerDidChangeContent:”返回的错误会在工具栏和 sqllite 等内容上返回。

任何人都可以建议如何在关系的父部分和子部分中使用 NSFetchedResultsController 的工作示例代码。

【问题讨论】:

我已将 Gerry 的答案标记为正确,因为我现在已经开始工作了。我发现的线索是双重的。首先,如果您通过在 viewWillDisappear 中删除它们并在 viewWillAppear 中重置它们(并强制刷新数据)来仔细管理获取的结果控制器委托,那么事情会表现得更好一些。等式的另一部分是正确的谓词格式。在“许多”数据的表视图中使用 fetchRequest.predicate = [NSPredicate predicateWithFormat:@"oneObject == %@", oneObject];来管理关系。 —— 【参考方案1】:

您绝对可以实现一个具有多个表视图的应用,其中每个表视图都有一个表视图控制器作为其数据源/委托,并且每个表视图控制器都有自己的获取结果控制器(可以获取不同实体的对象和/或使用不同的过滤谓词和/或使用不同的排序描述符)。

如果不了解您正在做什么(通过代码示例)以及您遇到的具体问题,很难给您具体的建议。

【讨论】:

谢谢格里。我已经开始在“多”端使用数组,但我知道它会遇到大型数据集的内存问题。我将恢复到最初的尝试并在此处发布一些代码。 我的正在从同一个实体中获取对象。更好地控制代表的设置,并找到正确的谓词让我前进了很长的路!感谢您的鼓励。 关于同一个实体的好点。我已经澄清了我的答案。

以上是关于具有核心数据的一对多表格视图的主要内容,如果未能解决你的问题,请参考以下文章

将一对多核心数据关系的前 5 个值绑定到文本字段

另一种多线程核心数据使用

iphone核心数据:无法删除具有一对多关系的数据

需要一些有关如何使用新的一对多关系设置核心数据迁移的信息

快速获取具有一对多关系的核心数据

具有一对多关系的复杂核心数据谓词