iphone - CoreData prepareForDeletion 被调用无限次

标签 iphone objective-c ios multithreading core-data

我的应用程序维护两个 NSManagedObjectContext。一个在主线程上运行,另一个处理网络事件并在后台线程上运行。

每当收到网络事件时:

  1. 主 MOC 进行保存
  2. 后台线程合并更改
  3. 网络事件已处理,更改已应用到后台 MOC
  4. 后台 MOC 保存。
  5. 主要 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/

相关文章:

ios - 加强 iOS 应用程序传输安全

ios - 无法在 Facebook 分享中添加标题和描述

iphone - 将 UIImage 压缩到特定大小(以兆字节为单位)

objective-c - 从 NSMutableArray 获取独特的项目

ios - 在保持相同导航栏的同时交换 NavigationController 的 ViewController

iphone - 尝试在没有 NIB 的情况下在 View 中显示 UILabel

objective-c - AVAudioRecorder 记录滞后 4 秒

iphone - 使用 viewDidUnload 在 iPhone 上进行内存管理

ios - 提醒应用底层周 uiscrollview

ios - 如何在后台开始录制 iOS Audio Session ?