1

私はCoreDataモデリングにおける関係の概念を理解しようとしていますが、どのエンティティが関係を持っているかの良い感覚である可能性があるので、理解するのは少し難しくなっています。別のエンティティにも対応できる関係に対して一意の番号を生成する方法はありますか?つまり、新しいエンティティエントリがあり、関係情報用に一意の番号101があり、詳細にも101が作成されているため、対応する関係をそのまま持つことができます。CoreDataモデルがこれを整理して、両方のエンティティに一意の値を生成するための何らかのジェネレーターを持っているかどうかはわかりません。

ありがとう

4

2 に答える 2

1

Core Dataは、オブジェクトグラフを可能な限り透過的に管理および永続化することを目的とした高レベルのライブラリです。Core Dataがデータベース内のオブジェクト(ちなみに必ずしもデータベースである必要はありません)をリンクする方法は、実装の詳細です。

モデルエディタでは、必要なエンティティを作成し、それらをリレーションシップにリンクするだけです。CoreDataが接続を管理します。

Person:
- first_name: string
- middle_name: string
- last_name: string
- private_address: -> Address (to-one relationship)
- work_address: -> Address (to-one relationship)

Address:
- persons: ->> Person (to-many relationship, you may want to reuse an address)
- address1: string
- address2: string
- zip: string
- city: string
- country: string    
...

person.first_nameはその人の名を返し、person.private_address.cityはその人の居住都市を簡単に返します。address.personsは、同じアドレス(プライベートまたは/および仕事)を共有するすべての人をNSSetとして返します。address.persons.countは、そのアドレスを共有する人の数を返します。表示されるのはオブジェクトグラフです。

Core Dataは、エンティティが少なくとも保存されると、すべてのエンティティにある種の一意のID、不透明なNSManagedObjectIDを提供します。おそらく、URIRepresentationを使用したほうがよいでしょう(ここでも、エンティティが保存されたら)。店舗間の関係を作成する場合は、URIRepresentationを使用するか、独自のIDを使用できます。エンティティごとの一意のID、またはストアごとの一意のIDを維持するのはかなり簡単です。

しかし、ほとんどの場合、そのような低レベルの懸念に対処する必要はありません。Core Dataは、関係の管理に非常に優れています。

于 2012-06-11T09:18:20.287 に答える
0

理解を深めるには、おそらくCore Data Programming Guideを読む必要があります。

SQL のバックグラウンドを持っている場合、リレーションシップは基本的FOREIGN KEYにテーブルまたは結合テーブルを表し、オブジェクトを相互にマッピングします。

Companyそれで、多くの sを持つ a があるとしましょうEmployee。2 つのタイプのエンティティを作成し、会社と従業員の間に 1 対多の関係を設定します (従業員が複数の会社で働いている場合は、多対多の関係も設定します)。

Core Data を使用すると、特定の会社の従業員を簡単に追加、削除、または別の方法でアクセスできます。

そのため、関係はエンティティのインスタンスを相互に関連付けるために使用されます。

于 2012-06-11T09:22:27.023 に答える