0
我有一個程序,我使用CoreData來管理永久和臨時數據。爲什麼在刪除核心數據中的對象之前需要刪除關係?
在一個實例中,我通過在用戶按下取消時刪除對象來中止添加一些數據。但是當我點擊下一個視圖時,數據仍然存在,附加到它的父核心數據對象。
[self.bar removeFoosObject:self.foo];//Why do I need this line?
[self.foo.managedObjectContext deleteObject:self.foo];
我最終解決了這個問題,通過手動刪除它的父級的子對象 - 但不是核心數據自動處理?爲什麼我需要第一行?
我運行了一些測試代碼,而且Foo肯定被刪除了 - 代碼正在清理讓我檢查,而且MOC已經設置爲零。內存存在,但它應該非常非常死...
Hrm ...我會檢查刪除規則,但我會認爲刪除的對象將從其父母中刪除。至於保存數據庫...考慮到我從來沒有保存過它,爲什麼要麻煩? – RonLugge
對於孩子的刪除規則是無效的,這是正確的。子對象也被設置爲父對象的非可選規則,這是正確的。父母將其關係標記爲級聯/可選,但在這裏應該沒有關係。 – RonLugge
當您保存對象時,所有關係都被選中,如果您使用的是核心數據,那麼元素應該通過保存託管上下文將自己保存在持久存儲中。當你保存所有關係被選中時,這裏是自動刪除關係完成的時候。你不能期望它像目標C那樣神奇地發生,因爲它們不是對象,它們是數據庫的實體。因此,如果您刪除該對象,然後保存上下文,那麼父級關係應該被取消。 – Pochi