2010-12-04 3 views
0

私はテーブル "Person"と多対多の関係を持つ "Group"テーブルと多対多の関係を持つ "Event"というテーブルを持っているとします。CoreDataテーブルを他のテーブルとの関係の外で編集するにはどうすればいいですか?

同じ人物を参照できる多くのグループを作成できます。

「グループ」が削除された場合、関連付けられた「人物」が他の場所で参照される可能性があるため、削除する必要がないので、「人」から「グループ」に逆の関係は追加していません。

私は逆の関係を除外すべきですか?ドキュメントはこれに強くアドバイスしていますが、これは多くが正しい方法であると考えています。

何か助けていただければ幸いです。

+0

また、グループの削除ルールを「アクションなし」に設定する必要がありますか?この方法では、グループが削除されても「Person」テーブルは変更されません。 – Christopher

+0

私は今それを持っているかもしれないと思います...グループは人と多人数の関係を持っています。人はグループと逆対多の関係にあります。今私は削除ルールを決定する必要があります。私はグループ・パーソンを「行動なし」、個人グループを「拒否」としています。私は、Group-Personが "Nullify"になっている必要があり、CoreDataが他のグループによって参照されている場合に "Player"だけを残しておくほどスマートであるとは思わないでしょうか?私はそれが私が求めている中心的な質問だと思う:-)ありがとう... – Christopher

+1

Christopher、あなたは通常 "Nullify"のデフォルト値が必要です。 「アクションなし」は、コードでカスタム動作を実装するときに使用します。 –

答えて

2

特にそうでない理由がない限り、は常にに逆の関係があります。 CoreDataは、オブジェクトグラフの整合性を維持するのに役立ちます。リレーションシップのデフォルトの削除ルールは「Nullify」です。これはあなたが望むように聞こえます。 「Nullify」とは、このオブジェクトを削除すると、この関係のもう一方の端にあるリレーションシップ属性が(1対1の関係の)nill-outになり、(複数対の関係の場合に)セットから値が削除されます。リレーションシップのもう一方の端が実際に削除される唯一の方法は、削除ルールを変更してそれを指定する場合です。

tl; dr:逆関係を使用して、削除ルールをデフォルトの "Nullify"のままにします。

関連する問題