2つのエンティティがある場合。FooandBar。そして、Fooには2つの特性があります。タイプBarのbar1およびbar2。今、FooはBarと1対多の関係を持っていますか?少なくとも、Core Dataのモデルとしてモデル化する必要がありますか?それとも、2つの1対1の関係ですか?逆を使用してCoreDataで適切に設定するにはどうすればよいですか?私が理解している1対多の関係ですが、最後の関係タイプではありませんか?それも可能ですか、それとも良い方法ですか?
3 に答える
Foo には 2 つのプロパティがあります。Bar 型の bar1 と bar2。Foo は Bar に対して 1 対多のリレーションシップを持っていますか?
いいえ、Foo には Bar との 2 つの関係があり、それらの関係には と という名前が付けられbar1
てbar2
います。それらが「1対1」か「対多」かは、指定方法によって異なります。モデル内のそれぞれを選択し、「to-many」チェックボックスがチェックされているかどうかを確認します。
少なくとも Core Data のようにモデル化する必要がありますか?
それは、モデル化しようとしているものによって異なります。特定のオブジェクトに対して 2 つの別個の関係 (2 つの異なる "対 1" の関係) が必要ですか、それともオブジェクトのグループに対して 1 つの関係 (1 つの "対多" の関係) が必要ですか? 物事を明確にするのに役立つ例を次に示します...
ビジネスには、0 人以上の従業員がいる場合があります。ビジネスには、1 人の最高経営責任者と 1 人の取締役会の議長もいます。employees
そのため、Business エンティティには、Person エンティティと名前が付けられた「対多」の関係がある場合があります。ceo
また、 andという名前の「対 1」の関係を持つこともできます。これもchairman
Person との関係です。これらは必ずしも必要ではないかもしれません。CEO と会長はどちらも従業員であるため、一連の従業員を検索し、役職でフィルタリングすることで見つけることができます。ただし、それらを頻繁に使用し、そのたびに他の何千人もの従業員を検索する必要がない場合は、それらを個別の関係として持つと便利です。
逆を使用して Core Data で適切に設定するにはどうすればよいですか?
繰り返しますが、それはモデル化しているものによって異なります。たとえば、関係の逆は、employees
Person のemployer
「対 1」関係になります。
エンティティにはいくつかの異なる種類のプロパティがあり、属性と関係があります (およびフェッチされたプロパティですが、それは重要ではありません)。Foo と Bar は、Bar プロパティを持つ Foo で作成した 2 つのクラスのようです。次に、それらをコア データ モデルのエンティティとして同化します。
通常、物事は逆に行われます。Core Data モデル エディタでエンティティを作成します。次に、関係を作成してエンティティをリンクします。Foo から Bar への関係を追加する場合は、Bar から Foo への逆の関係を作成することをお勧めします。
- Foo から Bar への関係を作成する
- Bar から Foo への関係を作成する
- その最後の関係を選択し、その逆を最初の関係に設定します
Xcode で一致する NSManagedObject サブクラス Foo と Bar を生成する場合は、エンティティを選択し、Xcode エディタ メニューで [Create NSManagedObject subclasses] を選択します。
次に、モデルのセットアップ方法に一致する適切な属性を持つ 2 つのクラスであることがわかります。
私はCore Dataに関する本を執筆しており、このすべてがより詳細に説明されています。
これは 2 つの 1 対 1 の関係です。逆にするには、逆フィールドでエンティティを選択するだけです(関係を作成するとき)。