我在整個應用程序(有兩個實體)中有一個託管文檔,用戶可以從兩個不同的視圖控制器進行更新。每個視圖控制器都有自己的NSFetchedResultsController屬性,用於將更改中繼到:一個視圖控制器中的UICollectionView和另一個視圖控制器中的UITableView。根視圖控制器中的UICollectionView顯示團隊,而segued視圖控制器中的UITableView顯示該團隊中的玩家。核心數據保存問題
當我在第一個視圖控制器中,我可以添加一個團隊的實例,它可以正常工作,因爲它將它們保存到文檔,然後將它們添加到UICollectionView。當我在第二視圖控制器,I使一個播放器插入CoreData並調用:
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:nil];
這正確地調用NSFetchedResultsControllerDelegate方法: - (無效)控制器:didChangeObject:atIndexPath:forChangeType:newIndexPath:
在該委託方法,我稱:
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
但是,調用在表視圖此行插入方法導致以下核心數據錯誤:
「CoreData:錯誤:嚴重的應用程序錯誤。核心數據更改處理期間捕獲異常。這通常是NSManagedObjectContextObjectsDidChangeNotification的觀察者中的一個錯誤。 * - [__ NSPlaceholderArray initWithObjects:計數:]:嘗試從對象[0]與USERINFO(空)插入零對象」
我fetchedResultsController肯定是NSManagedObjectContextObjectsDidChangeNotification的觀察者,但該錯誤在任何改變之前存在的所以我基本上無法確定託管對象上下文是在哪一點得到空userInfo
(另一件事情是,我的NSFetchedResultsController從根視圖控制器,它具有UICollectionView,觸發它的在下一個視圖控制器中的NSFetchedResultsController之前的委託方法,它具有UITableView,它自己觸發。我認爲這是共同的正確的功能,因爲Team和Player都在CoreData中獲得更新)。
有關爲什麼UITableView行插入導致此錯誤,或者我的單個託管文檔如何可能導致此不一致的任何想法?
哇,愚蠢的錯誤。雖然我提供了有限的代碼,但是很棒。謝謝! – user1096786
明白了,謝謝。 – user1096786