我今晚花了幾個小時嘗試創建一個設置,我有三個託管對象上下文 - 一個連接到我的應用程序的代理,一個負責UITableView
更新(通過NSFetchedResultsController
)和NSOperation
子類。如何保持多個NSManagedContext同步?
我可以從NSOperation
子類應用程序委託的變化通過觀察NSManagedObjectContextDidSaveNotification
,並在我的主線程發射了mergeChangesFromContextDidSaveNotification:
通過就好了流動,但是當我試圖從我UITableView
數據源做同樣的事情,我得到以下異常:
2010-02-19 02:00:39.750 MyApp[44687:207] Serious application error. Exception was caught during Core Data change processing: *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0] with userInfo (null)
2010-02-19 02:00:39.750 MyApp[44687:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]'
我會很感激任何意見 - 我以前所有的涉及核心數據管理對象上下文都非常簡單1設計:1同步方案。我所提議的甚至可能嗎?
你使用過調試器嗎?它是什麼告訴你關於你試圖將nil插入到NSArray的?具體來說,打破objc_exception_throw並找出導致此問題的部分代碼。 – 2010-02-18 15:08:03
約書亞,它實際上來自何處: - (無效)控制器:(NSFetchedResultsController *)控制器didChangeObject:(ID)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)型newIndexPath:(NSIndexPath *)newIndexPath { \t NSArray * paths = [NSArray arrayWithObject:newIndexPath]; 顯然,NSArray不能由{0,0}的索引路徑初始化。仍然在研究爲什麼會發生這種情況。 – 2010-02-19 00:00:08