6

Core Data に次のようなデータが保存されています。

| | 名前 | 識別子 | その他のもの |

UITableView に名前を表示する必要がありますが、一意の名前と識別子のペアで名前を表示したいだけです。だから:

John | 3 | foo
Betty | 4 | foo
Betty | 4 | bar

ジョン、ベティを返すクエリのみが必要です。「テーブルから一意の名前、識別子を選択する」のようなもの。

NSPredicate でこれを行う方法はありますか、または重複除去されたフィールドを別のコンテナーに注ぎ、それを検索する必要がありますか?

4

2 に答える 2

10

Core Data は、そのオブジェクトグラフを (オプションで) SQL 永続ストアに永続化するオブジェクトグラフ管理フレームワークです。オブジェクト属性を照会する方法はなく、オブジェクトのみです。次に、結果の配列からインスタンスをクエリできます。

NSArray *instances; //from -[NSManagedObject executeFetchRequest:error:]
NSArray *uniqueNames = [instances valueForKeyPath:@"@distinctUnionOfObjects.name"];

名前がプロパティにあると仮定しnameます。

各ユーザーに 1 つの名前、1 つの ID、および複数の {foo,bar,...} を持たせたい場合は、名前と ID を持つユーザー エンティティ、およびエンティティとの対多関係として状況をモデル化する必要があります。 foo/bar/etc を表します。

@distinctUnionOfObjects(およびその他のコレクション演算子) の詳細については、キー値コーディング ガイドのコレクション演算子セクションを参照してください。

于 2009-12-11T17:50:36.023 に答える
9

これは Core Data ですので、 をチェックしてください-[NSFetchRequest setReturnsDistinctObjects:]

于 2009-12-11T06:03:16.837 に答える