1

iOSアプリにCoreData(NSManagedObject、UIManagedDocument)を使用していますが、属性の配列をフェッチできるかどうか疑問に思っていました。

たとえばPerson、データベースにエンティティがあり、それぞれPersonにと呼ばれる属性とincomeと呼ばれる名前があるとしnameます。データベースに複数Personのが存在するとします。データベース全体のすべての収入を含む配列をフェッチすることは可能ですか?(各人の収入をエントリとして持つ配列)。もしそうなら、どのように私はそれらの名前で配列をソートしますか?

これが不可能な場合、私がこれを達成するためにどのように提案しますか?フェッチに時間がかかるPersonなど、他にも多くの大きな属性があるため、エンティティ全体をフェッチしたくありません。images

4

1 に答える 1

2

次の方法で、必要なプロパティを取得できます。

NSFetchRequest* fetchRequest = [NSFetchRequest new];
fetchRequest.entity = <person entity description>;
fetchRequest.propertiesToFetch = @[ @"name", @"income" ];
fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES] ];
fetchRequest.resultType = NSDictionaryResultType;

NSError* error = nil;
NSArray* personsAttributes = [managedObjectContext executeFetchRequest: fetchRequest error: &error];

peopleAttributesは次のようになります。

[
    { "name" : "Alfred", "income" : 1000 },
    { "name" : "Birgite", "income" : 2000 },
    …
]

ARCとリテラルを使用したコード。ニーズやコンパイルオプションに合わせて調整する必要があるかもしれません。

于 2012-06-21T14:48:24.317 に答える