我有一個問題,我很有信心,我知道在廣義上它是什麼以及如何修復它,但我不知道,並沒有發現什麼清潔/最佳實踐的方式來實施解決方案是。如何創建/管理多個ManagedObjectContexts?
我的問題:我是從一個文件到我的核心數據模型在後臺線程中使用dispatch_async,其工作時,我做的GUI的東西,也影響模型,然後一鼓作氣,例如除了罰款加載一些數據:
'NSGenericException', reason: '*** Collection ... was mutated while being enumerated.'
...我以爲是由於兩個線程在同一ManagedObjectContext數據搞亂,因爲我只使用一個的時刻。
所有文章和回答我讀過告訴我,我應該使用單獨的ManagedObjectContext後臺線程,而是如何/在哪裏設置?
目前我創造我PersistentStoreCoordinator和(一個)ManagedObjectContext在我的應用程序代理,以及ManagedObjectContext傳遞給我的(唯一的)查看協調員。它反過來將它傳遞給後臺數據加載任務(這是我的模型類之一的類方法),從而導致該問題。
我應該
- 通過PersistentStoreCoordinator到視圖控制器,所以它反過來又可以把它傳遞給後臺任務,從而使後臺任務可以創建自己的本地ManagedObjectContext?
- 在App代表創建ManagedObjectContexts池,他們都傳遞到視圖控制器,以便它可以使用一個自己和給別人出後臺任務?
- 別的東西完全?
你可以添加一些代碼?特別是生成異常的代碼。當你說你應該仔細管理線程之間的NSManagedObjectContext對象時,你是對的,但是看到你的代碼真的很好。 – magma
我還沒有設法重複創建完全相同的例外,我引用的例子就是一個例子。但是每當我遇到問題時,總是在GUI中做某件事情時會改變ManagedObjectContext中的某些內容,而後臺任務正在將數據加載並保存在相同的上下文中。 – AlanL