少なくとも、ドキュメントで説明されている単純なケースを超えて、コアデータの関係の削除ルールがどのように機能するか少し不明です。コアデータ削除ルールが空のときに削除する
ここで質問したほとんどの答えは、1対多の関係の左側のオブジェクトが右側のオブジェクトを「所有」するモデルを使用します。 a Person
にはPhoneNumber
があり、その人物を削除すると、関連するすべての番号が削除されます。例その一種で、溶液は透明である:あなたがそうのような関係を設定した場合、Core Dataはあなたのためにすべてを処理します:私は興味がどのような
Person --(cascade)-->> PhoneNumber
PhoneNumber --(nullify)--> Person
は反対です:どこ対多の関係「所有権」が逆転される。たとえば、CoreDataBooksサンプルコードを拡張して、ある場所でユニークな著者に関するすべての情報を収集するためのAuthor
エンティティを追加することができます。 A Book
には1人の著者がいますが、著者には多くの書籍がありますが、書籍をリストしていない著者については気にしません。したがって、books
の関係が空でないAuthor
の削除は許可しないでください。最後のBook
を削除すると、特定のAuthor
を削除すると、Author
が削除されます。
私は私がのわからないことです...これを手動で行うにはいくつかの方法を想像することができます:
- は、Core Dataはと同じように、自動的に本の少なくとも一部を実行する方法を持っていません関係の削除ルール?
- このような状況を処理するには、「標準的な」推奨の方法がありますか?
何か他のことが起こらない限り、著者の書籍を一度に削除すると失敗するようです。私は、対応するprepareForDeletionにauthor.books.countの値を印刷しています。両方の書籍について2です。その後、著者は決して削除されません。 –