核心数据:从多个 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 中获取对象的主要内容,如果未能解决你的问题,请参考以下文章