2013-05-13 75 views
1

看起來好像我已經暴露了一個奇怪的問題,其中我的被刪除的對象實際上並沒有被刪除。這隻發生在我回應theNSManagedObjectContextObjectsDidChangeNotification時。NSManagedObjectContextObjectsDidChangeNotification被刪除的對象問題

更具體地說:我有一個A <的列表 - >> B。級聯刪除B的'擁有'實例。
當我刪除A的一個實例時,它'擁有'B實例被刪除,但A實例未被刪除。

當我在我的通知處理程序的頂部調用[context processPendingChanges];時,問題似乎是只有發生在刪除最後一個對象時。否則,A的情況往往會繼續存在。

所以,這個問題的根源似乎是我不瞭解Core Data的問題。搞清楚爲什麼沒有生產力。任何人都可以列出我可能會看到這種行爲的原因嗎?

回答

0

我發現有兩個原因會發生這種情況:

A)在我的情況,我的第一個策略是建立刪除管理對象的臨時圖形作爲一個組織的方便。您必須修改臨時受管對象上下文中的已刪除對象,否則您對已刪除對象所做的任何更改將取代刪除。一旦完成對(陳舊的)刪除的管理對象的操作,請立即重置臨時上下文。 B)刪除時,對象的引用計數必須爲0。這意味着它們必須在刪除之前從所有獲取的結果控制器,NSArrays等中釋放。

滿足A和B解決了這個問題。