我的应用程序维护两个 NSManagedObjectContext。一个在主线程上运行,另一个处理网络事件并在后台线程上运行。
每当收到网络事件时:
- 主 MOC 进行保存
- 后台线程合并更改
- 网络事件已处理,更改已应用到后台 MOC
- 后台 MOC 保存。
- 主要 MOC 合并了更改。
这工作正常,直到我尝试删除主线程内的 NSManagedObject:
a.在步骤 #2 之后,prepareForDeletion 在后台线程上再次调用
b.在步骤 #5 之后在主线程上调用了prepareForDeletion
每次 MOC 保存/合并可憎事物时,更糟糕的是和 b。抬起他们丑陋的头。
据我所知,NSManagedObject 正在被复活然后被删除,一遍又一遍。
我对这个问题感到抓狂。上周我一直在努力让多个 MOC 运行起来。我不知道如此简单的事情会引起如此大的悲伤。
最佳答案
罗兰,
我的建议是不要维护后台 MOC。相反,始终在开始后台处理时创建它。这样它就始终处于与持久存储相同的状态。 (行缓存是您的 friend 。不必太担心后台 MOC 的状态。)
安德鲁
关于iphone - CoreData prepareForDeletion 被调用无限次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298058/