我對核心數據中關係的刪除規則如何工作有點模糊,至少超出了文檔中描述的簡單情況。核心數據刪除規則對多的關係,刪除時爲空
這些情況中的大多數以及我在這裏看到的大多數答案都使用了一種模型,其中一對多關係左側的對象「擁有」右側的對象:例如,一個Person
有PhoneNumber
s,並且如果你刪除了那個人,你刪除了他們所有的相關號碼。在那種情況下,解決方案是明確的:核心數據將處理一切爲了你,如果你設置像這樣的關係:
Person --(cascade)-->> PhoneNumber
PhoneNumber --(nullify)--> Person
什麼我感興趣的是相反的:一個一對多的關係,其中「所有權」被顛倒過來。例如,我可能會擴展CoreDataBooks示例代碼以添加一個Author
實體,以便在一個位置收集有關獨特作者的所有信息。 A Book
有一位作者,但作者有很多書......但我們不關心我們沒有列出書籍的作者。因此,刪除Author
其books
關係不爲空是不允許的,並且刪除引用特定Author
的最後Book
應刪除該Author
。
我可以想像一對夫婦的方式來手動做到這一點...什麼我不知道的是:
- 做核心數據有辦法至少做一些這種自動的,與關係刪除規則?
- 是否有一個「規範」,首選的方式來處理這種情況?
除非有其他事情發生,否則在作者的兩本書都被刪除的情況下,這似乎失敗了。我在相應的prepareForDeletion中打印出author.books.count的值,兩本書都是2。那麼作者永遠不會被刪除。 (類名更改爲匹配問題,但關係相同) – 2013-03-26 23:48:24