0

Core Data モデルのリレーションシップを通じてオブジェクトをクエリする小さな関数があります。

私は関係の対多面をすべてセットアップしています。ただし、関係の特異な側を と見なされるため、適切に設定する方法がわかりません。それをどうするかわかりませんNSSet

データ・モデル

NSSet他の「対多」エンティティに割り当てたいオブジェクトを 内に配置しようとしましたが、エラーが返されました。

ドキュメントを調べてみましたが、見つかったのは多対多の関係の例だけでした。

SOで少し検索してみましたが、この特定の質問をした人は見つかりませんでした。

誰かが私が求めていることを理解し、助けてくれることを願っています!

編集:

皆さんが視覚化できるように、関係の「shindys」側を設定しましたが、ここでは「ユーザー」側を設定しようとしています。これは、ご覧のとおり、特異な関係です。

編集:

以下の@Mundiの回答の後、これをデータモデルとして持っています:

ここに画像の説明を入力

すべて正しいです。ユーザーのすべての友人 shindy とその友人をフェッチする機能が必要なだけです。これを Twitter のホーム フィードと比較できます。

4

1 に答える 1

1

データモデルの設定が間違っているようです。

1 人のユーザーが多数のメッセージを持つことができます。1 つのメッセージには少なくとも 2 人のユーザー (from と to) が含まれます。shindy とは何かわかりませんが、あなたが設定した方法では、1 人のユーザーが複数のユーザーで共有できる 1 つの shindy しか持っていません。

これが正しい場合は、データ モデルのメッセージ部分を変更して多対多にするか、送信者と受信者を表す 2 つの関係を作成する必要があります。

Message                       User
  sender <<-------------------->sentMessages
  receivers <<---------------->>receivedMessages

また、ユーザー属性の名前を「shindys」から「shindy」に変更する必要があります。shindy がパーティーであることがわかったので、その関係を多対多に変更する必要があります。

したがって、ユーザーごとに shindy が 1 つしかない場合 (それが何であれ、説明してください)、ユーザーを shindy でソートするには、次のようなソート記述子を使用します。

[NSSortDescriptor sortDescriptorWithKey:@"shindy.timePosted" ascending:NO];

If, however, you want to filter by shindy (all users belonging to a shindy if there are several) you would have to use a predicate, like this

[NSPredicate predicateWithFormat:@"ANY shindies.profileID = %@", 
                                                someUser.profileID];

or use some other way to identify the shindy.

于 2013-01-26T11:41:17.660 に答える