2012-02-15 55 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