0

我有兩個NSManagedObject(人和汽車)和他們之間的關係「不相反」。這種關係不是相反的。刪除NSManagedObject和更高版本刷新tableView不能正常工作

我有兩個ViewControllers,第一個有一個TableView,顯示Person Object的每個實例,第二個有一個Table View,顯示該Person的每個Car。 第一個視圖控制器顯示人的姓名和該人的汽車數量。

所有工作正常,但我試圖刪除一個人的車時出現我的問題。 我想我正確地刪除對象:

[_person removeCarssObject:car1]; 

但我的問題在第二個觀點,這是我卸下車是時真的出現了,我去了第一種觀點:汽車的數量沒有按」 t刷新和應用程序崩潰。

當我添加一輛車,我去第二個視圖它的作品和「汽車數量」增加。

當我再次運行應用程序時,汽車被刪除。這就是爲什麼我認爲我刪除對象的方式是正確的。

我已經意識到,該應用程序總是工作的汽車數量將取值0,否則應用程序崩潰。

希望你能幫助我, 謝謝!

UPDATE:

我已經改變了我的代碼,現在我重新加載在

- (void)viewWillAppear:(BOOL)animated{ 

這樣我可以看到表的正確數據表視圖的數據查看,但只有一秒左右,後來應用程序崩潰與日誌:「線程1:EXC_BAD_ACCESS(代碼= EXC_I386_GPFLT)」

我的「模型數據」中的所有關係的刪除規則屬性:Nullify。 也許這是導致崩潰的原因。

+1

正如Apple建議的那樣,沒有令人信服的理由不存在反向關係。 – Mundi

+1

可能需要更多的代碼來真正地說出問題所在。像你在哪裏設置'_person',你在哪裏設置'car1',你在哪裏配置你從中獲得它們的單個managedObjectContext,並且你是否強烈地參考它? – stevesliva

+0

除了添加一些代碼,請添加應用程序崩潰時顯示的消息。那些通常有關於出錯的重要細節。 –

回答

0

最後我解決了這個問題。 啓用殭屍對象我收到了關於崩潰的更多信息。該應用程序是用下面的消息崩潰:

[視圖控制器的tableView:canEditRowAtIndexPath:]:消息發送到釋放的實例0xaae64d0

我有像這樣的方法:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
     return YES; 
    } 

搜索,終於我發現這個問題在計算器中說的相同:tableView:canEditRowAtIndexPath: crash when popping viewController

問題解決後添加下面的代碼:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [table setEditing:NO]; 
}