0

サーバー (バックエンド) からロードする必要があるデータがあります。たとえば、ユーザーとイベントのエンティティがあるとしましょう。それらの間の関係は多対多です (ユーザーは多くのイベントに参加でき、イベントには多くの出席者がいる可能性があります)。すべてのデータは、バックエンドにリモートで保存され、コア データにローカルに保存されます。バックエンドからデータをダウンロードすると、それを NSManagedObjects に変換し、NSManagedObjectContext に保存します。すべてがとてもシンプルですが...

知りたいイベントのリストをダウンロードするとき、このイベントの出席者数。しかし、まったくやり過ぎなので、同じリクエストでユーザーのリストをダウンロードすることはできません。必要なのは、たとえば、ユーザーの一意の ID のリストをダウンロードして、出席者の総数と具体的なユーザーの詳細データを (一意の ID を介して) ダウンロードする手段の 2 つを取得することです。または、別の例があります。出席者の総数を把握し、それらの限られたセットをダウンロードする必要があるため、CoreData でいくつかのエンティティを作成できますが、すべてのエンティティを作成することはできません。

したがって、主な質問は、そのような情報を CoreData にどのように格納することになっているのでしょうか? つまり、一部のエンティティには、現在 CoreData に実際には存在しない関係にある関連エンティティがいくつかあることを知る必要がありますが、それらがいくつ存在する必要があるかはわかっています。usersCount最初に頭に浮かんだのは、イベント エンティティのようなものと呼ばれる属性を持つことですが、それはちょっと汚いようです。このような状況のベストプラクティスは何ですか?

質問が十分に明確でない場合はコメントしてください。詳細を追加できます。

4

2 に答える 2

1

対応するユーザー ID のリストを含むイベントをダウンロードすると、Eventオブジェクトと関連Userオブジェクトを作成できますが、ユーザー オブジェクトの「userId」属性のみを入力します。

後で完全なユーザー情報をダウンロードするときに、既存の (不完全な) オブジェクトを更新するか、新しいユーザー オブジェクトを作成します。「Core Data Programming Guide」の「 Implementing Find-or-Create Efficiently」では、役立つ可能性のあるパターンについて説明しています。

そのため、最初に不完全な情報でコア データ オブジェクトを作成し、後で詳細な情報でオブジェクトを更新するという考え方です。利点は、すべての関係をすぐに設定できることです。たとえば、関連ユーザーのカウントは、ユーザー情報がまだ不完全な場合でも機能します。

于 2013-04-12T11:16:32.877 に答える
1

特にそれらのエンティティが個別のリクエストを介して取得およびページングされる場合は、カウントを格納するための属性を持つことについて何も汚いことはありません。

于 2013-04-12T11:27:55.947 に答える