這裏就是我想要做的事:崩潰正在重置NSPersistentStore而NSFetchedResultsController是跟蹤變更後
- 我使用NSFetchedResultsController來進行獲取和使用其委託
- 跟蹤更改我下載一些數據和根據某些情況下,我有時會刪除CoreData存儲的所有本地數據,方法是刪除NSPersistentStore並重新創建一個新數據。
- 我創建一個基於數據管理對象,並將其保存
- NSFetchedResultsController現在應該告訴我,我有一些變化
我得到的卻是試圖保存數據時,這個崩潰:
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. Object's persistent store is not reachable from this NSManagedObjectContext's coordinator with userInfo (null)
我總是使用一個NSManagedObjectContext,我總是讀&保存在主線程中。
看來,切換NSPersistenStore以某種方式混淆了獲取的結果控制器。這是預期的行爲還是我做錯了什麼?
嘗試重置以及;仍然沒有變化。我已經使用'removePersistentStore:error'' addPersistentStoreWithType:configuration:URL:options:error'刪除/添加了持久存儲。如果我需要重新創建MOC,那麼我認爲我也必須重新創建NSFetchedResultsController;我試圖避免這種情況,以減少應用程序中的耦合 – 2012-02-10 14:54:09
是的,我相信移除NSFetchedResultsController將是解決方案的核心。我想不出通過調用所有數據(無需通過調用deleteObject:來更改通知)的方法,同時保留引用該數據的對象。 – 2012-02-10 16:10:49
理論上,理論上,NSFetchedResultsController可以被MOC通知,一旦它的底層存儲消失了,結果集中的所有對象都被刪除了。不知道這是如何處理內部。 – 2012-02-10 16:33:26