2

CoreDataで使用したいかなり高度なDataModelについて質問があります。

これまでにやったことの詳細に入る前に、やりたいことを説明します。

私は1つの部屋に滞在し、好みを持っているホテルのゲストのリストを持っています。準備ができたら、ユーザーはゲストを選択してデータを表示し、新しいゲストを追加できるようにする必要があります。また、部屋を選択し(アプリケーションによっても維持されます)、好みを選択します(ユーザーは新しい好みを追加することもできます)。ゲストは、設定をまったくまたは多く持つことができません。

これが私がこれまでに持っているものです。私は3つのエンティティを作成しました:-部屋番号のある部屋-名前のある設定-名前のあるGuestInfo->これらの関係の部屋(宛先の部屋)と設定(「To-ManyRelationship」のある宛先の設定)

これで、これらすべてを実行して、管理対象オブジェクトクラスを作成しました。ここまでは順調ですね。問題は、いくつかの警告が表示されることです。

  1. GuestInfo.room-関係には逆はありません
  2. GuestInfo.prefs --to-many関係には逆はありません:これは詳細設定です(特定の関係の複数の宛先にオブジェクトを配置することはできません)

これは私が無視できる単なる警告ですか?つまり、部屋の場合、各ゲストの部屋番号は常に1つだけですが、1つの部屋にさらに多くのゲストがいる可能性があるため、ここで逆の関係を設定することはできません。また、設定については、各ゲストの設定がないか、それ以上になることはありません。

4

2 に答える 2

4

Objective-C では、警告は決して無視されるべきではありません。コア データを扱う場合、これは二重に当てはまります。実行時にすべての警告をエラーとして扱います。

逆の関係については、常に逆を持つ必要があります。そうしないと、パフォーマンスが低下し、データの整合性が危険にさらされます。

于 2010-06-04T17:36:54.250 に答える
1

これらの警告は無視できますが (この質問を参照してください)、逆の関係を追加して Core Data を満足させるのは簡単です。Room と GuestInfo の関係を 1 つ追加し、Preference と GuestInfo の関係を 1 つ追加して、必ず逆を選択してください。部屋ごとに 1 つのゲスト情報しかないため、これらは 1 対 1 になると思います。これにより、ゲスト情報に部屋を設定すると、その部屋の他のゲスト情報が削除されるという副作用が生じる可能性があります。それが望ましくない場合は、関係を多対 1 にすることができます。

于 2010-06-03T16:35:33.190 に答える