2012-02-15 53 views
0

我的应用程序维护两个NSManagedObjectContexts。一个在主线程上运行,另一个处理网络事件并在后台线程上运行。CoreData prepareForDeletion被称为无限时间

每当接收到的网络事件:

  1. 主要MOC并保存
  2. 后台线程合并
  3. 网络事件被处理和更改应用于背景MOC的变化
  4. 背景MOC保存。
  5. 主要MOC合并更改。

,直到我尝试删除NSManagedObject主线程中能正常工作:

一个。 prepareForDeletion在步骤#2后在后台线程上被再次调用。

b。 prepareForDeletion在步骤#5之后在主线程上调用

更糟的是每次MOC保存/合并可憎物a。和b。背后他们丑陋的头。

据我所知,NSManagedObject被复活,然后一遍又一遍地被删除。

我在这个问题上撕掉我的头发。我花了上周争取让多个MOC运行。我不知道如此简单的事情会导致如此多的悲伤。

回答

1

Lorean,

我的建议是不维护背景MOC。相反,始终在开始后台处理时创建它。这样它总是处于与持久存储相同的状态。 (行缓存是你的朋友,不要太担心后台MOC的状态)

Andrew

+0

谢谢。这非常有帮助! – lorean 2012-02-16 22:59:20