【发布时间】:2012-07-30 17:59:37
【问题描述】:
我在使用 NSOperations 的多线程应用程序中使用 CoreData 时遇到了一些问题。我正在通过 MagicalRecord (2.0.3) 使用嵌套的 ManagedObjectContexts,如下所示:
Root Context (saves to disk)
|
Main Thread Context (for populating the UI)
|
Sub-Context(s) (used to add/edit/remove data)
我有一个 NSOperationQueue 来处理所有数据处理。
在大多数情况下,一切正常,我可以异步下载数据,然后将其提供给 NSOperation,然后将其写入其中一个子上下文。在操作结束时保存会将更改推送到主上下文并更新 UI。太好了!
问题在于,如果子上下文删除了一个实体并保存(将其推送到主上下文),同级子上下文仍然会认为它存在。因此,如果兄弟姐妹试图使实体出错并将其从其父级(主要上下文)中拉出,我会崩溃。
我有两个问题:
- 我应该使用 MOC 通知将推送到主 MOC 的更改合并回它的其他子项吗?我遇到了又一次崩溃...
- 我什至应该有多个子上下文吗? MOC 应该与单个线程相关联(MagicalRecord 帮助我自动执行此操作),并且我有一个 NSOperationQueue 用于保存数据,所以我不应该只有 1 个子上下文吗?我已经证实,有时我的保存是由不同的上下文执行的。
如果有任何建议,我将不胜感激。谢谢。
【问题讨论】:
标签: ios core-data nsoperation nsoperationqueue magicalrecord