核心数据:从多个 ManagedObjectContexts 中获取对象

Posted

技术标签:

【中文标题】核心数据:从多个 ManagedObjectContexts 中获取对象【英文标题】:Core Data: Fetch objects from multiple ManagedObjectContexts 【发布时间】:2013-05-16 15:17:25 【问题描述】:

我的 iPad 应用程序正在使用丢弃的子 ManagedObjectContexts 用于可编辑的 ViewController,因此我可以轻松丢弃已编辑的数据。 现在我想在覆盖视图中显示所有对象的列表,包括可能仍在其中一个子 MOC 中编辑的未保存对象。

有没有办法让所有现有的 MOC 在所有上下文中发出 fetch 请求?我知道我可以跟踪我创建的所有上下文,但我很好奇是否有更优雅的解决方案。

【问题讨论】:

【参考方案1】:

不,只有进行更改的托管对象上下文知道它们,直到您保存上下文并触发更改传播。

使用子 MOC 作为“便签本”的替代方法是使用撤消管理器。这样,您所做的更改将全部在同一个 MOC 中(因此 fetch 请求将看到它们全部),但您仍然可以回滚它们。

如果您真的需要同时使用多个独立的“便笺本”,这可能会有点麻烦。但是,在这种情况下,我还会查看应用程序的交互模型,因为对于 iPad 界面的约束而言,一次具有多个独立的待处理更改似乎相当复杂。

【讨论】:

感谢您的回答。不幸的是,在这种情况下,我不能将单个 MOC 与撤消管理器一起使用。我现在的解决方案是:我将所有子 MOC 保存在一个弱哈希表中,对所有子 MOC 执行 fetch 请求并返回结果的合并数组(这也很麻烦) - 感谢 UIKonf 的精彩演讲,顺便说一句!

以上是关于核心数据:从多个 ManagedObjectContexts 中获取对象的主要内容,如果未能解决你的问题,请参考以下文章

从同一个核心数据数据库中获取多个不同的实体

核心数据添加和检索到多个表如何

SwiftUI Picker 多个错误,核心数据,布局

如何将来自多个视图控制器的数据保存到单个核心数据实体中

核心数据保存和加载到多个实体

保存到多个实体中 - 核心数据 - Swift