1

animalTypeという属性を持つエンティティがあるとしましょう。コアデータ内には、これらのエンティティが10,000個あり、さまざまな動物の種類が不明な数あります。犬、猫、鳥など。コアデータに各動物タイプをフェッチして次のような配列を返すように指示できますか?

@[Dog, Cat, Bird, Fish, ...]

エンティティの配列をフェッチしたくありません。一意のリストが必要なだけですanimalTypes。いいえanimalType、繰り返す必要はありません。

4

2 に答える 2

3
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Animal"];
request.returnsDistinctResults = YES;
request.resultType = NSDictionaryResultType;
request.propertiesToFetch = @[@"animalType"];

NSArray *fetchedObjects = [self.managedObjectContext 
                         executeFetchRequest:request error:nil];

NSArray *result = [fetchedObjects valueForKeyPath:@"animalType"];

// @[@"Dog", @"Cat", @"Fish" ...]
于 2013-02-08T22:18:24.083 に答える
2

はい、とを組み合わせたNSFetchRequestのメソッドが必要になります。基本的に、フェッチはディクショナリの配列を返し、それらのディクショナリには、フェッチする特定のプロパティに対応するキーと値のペアが含まれます。この場合、各ディクショナリには1つのキー、、およびそのキーの個別の値が含まれます。それをあなたが説明するような配列に変換するのは簡単でしょう。setReturnsDistinctResults:setPropertiesToFetch:setResultType: NSDictionaryResultTypeanimalType

于 2013-02-08T22:10:03.793 に答える