1対多のコアデータ削除ルールを理解する 質問する

1対多のコアデータ削除ルールを理解する 質問する

Core Data Relationships の削除ルールについては少しよく分かりません。そのため、誰かがそれに関するいくつかの質問に答えるのを手伝ってくれると嬉しいです。

エンティティ A と B があります。A は B と対多の関係を持ち、B は A と対 1 の関係を持ちます。

A<--->>B

さて、A の削除ルールを Cascade に設定すると、それに関連するすべての B が削除されると理解しています。しかし、Nullify に設定すると、B が NIL に設定されるのでしょうか、それとも外部キーだけが NIL に設定されるのでしょうか?

また、B から A への関係についてあらゆるところを調べましたが、これを Nullify に設定する必要がありますか? それは A の「B オブジェクト」を Nullate するだけですか? それとも、A に関連付けられているすべての B を Nullify しますか? Cascade はどうですか? A に関連付けられているすべての B を削除しますか、それとも特定の B だけを削除しますか?

それとも、B から A への関係に「アクションなし」を使用するだけで、B を削除しても A には変更は発生せず、B への参照は存在しなくなるのでしょうか?

これらについてかなり混乱しているので、質問して申し訳ありません。

ありがとう。

ベストアンサー1

削除ルールを「nullify」に設定し、A オブジェクトを削除すると、B 内のそのオブジェクトへの参照が削除されます。逆の場合も同様です。cascade を設定して B を削除すると、B が指していた A が削除されます。その後、A から残りの B への削除ルール (cascade または nullify) に従います。

設定するルールは、データ モデルによって異なります。A が顧客で、B が顧客の注文である場合、A->B ルールを拒否 (顧客に注文がある場合に A が削除されるのを防ぐ) またはカスケード (顧客が削除されたときに注文を削除する) に設定できます。B->A ルールはおそらく「無効化」になります。注文が削除された場合は、顧客から注文への参照を削除するだけです。

関係削除ルールについては、Apple コアデータ プログラミング ガイド

おすすめ記事