0

私のアプリには、Deal と Address という 2 つのエンティティがあります。それらは多対多の関係で接続されています。Address エンティティには多くのプロパティがあります。緯度と経度はその 2 つです。Address オブジェクトの特定のプロパティ (緯度と経度) のみが取得されるように、関連する Address オブジェクトと共にすべての Deal オブジェクトを取得することは可能ですか?

4

1 に答える 1

1

私の理解が正しければ、フェッチの結果をフィルタリングしたくないでしょう。すべての取引が必要であり、関連するアドレスの属性のサブセットのみが必要です。

あなたの質問からは、これらの結果をどのように使用したいかは明らかではありません。Address エンティティの属性は、それぞれの Deal エンティティに関連付ける必要がありますか?

そうでない場合は、すべての Address エンティティをフェッチして、必要なプロパティを取得するだけです。Core Data は、必要な属性のみをフェッチすることでメモリを管理するのに役立つため、オブジェクト全体を単純にフェッチできます。すべてのインスタンスの属性の配列は、次のように簡単に生成できます。

[allAddresses valueForKeyPath:@"attributeName"];

また、フェッチ リクエストのresultTypeプロパティを に直接設定し、 でプロパティNSDictionaryResultTypeを指定することもできますpropertiesToFetch

もう 1 つのシナリオは、取引と住所の関係を壊したくない場合です。この場合、すべての取引を取得するだけです (Core Data は、メモリ フットプリントを削減するためにフォルトを使用します)。その後、結果を繰り返し処理して、各属性を簡単に取得できます。

for (Deal *deal in allDeals) {
   NSSet *allLongitudesInAddresses = 
             [deal.addresses valueForKeyPath:@"longitude"];
   // do something with the attributes
}
于 2013-01-25T01:11:46.620 に答える