CoreData prepareForDeletion称为无限时间

时间:2012-02-15 17:19:26

标签: iphone objective-c ios multithreading core-data

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

每当收到网络事件时:

  1. 主要MOC进行保存
  2. 后台线程合并更改
  3. 处理网络事件并将更改应用于后台MOC
  4. 背景MOC保存。
  5. 主要MOC合并更改。
  6. 这很好用,直到我尝试删除主线程中的NSManagedObject:

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

    湾在步骤#5之后调用主线程的prepareForDeletion

    每次MOC保存/合并可憎的事情都会更糟。和b。把他们丑陋的脑袋抬起来。

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

    我正在解决这个问题。我花了最后一周的时间来争取多个MOC运行。我不知道这么简单的事情会引起如此多的悲伤。

1 个答案:

答案 0 :(得分:1)

Lorean,

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

安德鲁