2010-10-26 119 views
0

我有一個使用核心數據進行存儲的基於導航的應用程序。這個特定部分的架構如下:NSManagedObjectContext崩潰應用程序的問題

場景的hasMany任務的hasMany DeviceCommands

任務也有很多其他的對象除了DeviceCommands(如DelayCommands等),但是這已經超出了問題的範圍(我想) 。

DeviceCommands還鏈接到父對象如下:

設備的hasMany DeviceCommands

現在,用戶可以創建一個新的任務,即彈出一個模態視圖來選擇設備。當您選擇一個設備時,將使用屬於該設備的DeviceCommand來推送tableview。當您選擇一個DeviceCommand時,它將其分配給task.deviceCommand = device.deviceCommand的任務。出於某種原因,這隻發生在應用程序的這一部分,該應用程序崩潰與控制檯中的以下輸出:

2010-10-26 15:37:33.337 livOS4 [47226:207]嚴重的應用程序錯誤。核心數據更改處理期間捕獲異常。這通常是NSManagedObjectContextObjectsDidChangeNotification的觀察者中的一個錯誤。 * - [NSMutableArray的objectAtIndex:]:索引35超出範圍[0 .. 0]與USERINFO(空)

指數35指DeviceCommand在的UITableView和NSFetchedResultsController索引。通過試驗和錯誤的過程,我發現NSMutableArray是帶有設備的數組。如果我添加一個新的設備到應用程序,數組邊界是[0 .. 1]。

我添加了NSManagedObjectContextObjectsDidChangeNotifications的觀察者,但它在觀察者收到任何東西之前崩潰了。

任何人都可以幫助或提供任何建議來解決這個問題嗎?

回答

-2

今天早上修好了。原來是我分配NSFetchedResultsController委託的問題。

+16

我知道這是舊的文章,但你能準確地對你做了什麼擴展? – chris 2011-08-13 07:13:13

+1

爲什麼這個答案被upvoted? – Martin 2015-06-05 09:23:05

3

我有NSFetchedResultsController相同的問題。

問題消失,然後我加入到我的viewController

- (void)dealloc 
{ 
    self.fetchedResultsController.delegate = nil; 
    self.fetchedResultsController = nil; 
}