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'ssetReturnsDistinctResults:方法,结合setPropertiesToFetch:and setResultType: NSDictionaryResultType。基本上, fetch 将返回一个字典数组,而这些字典又将包含与您获取的特定属性相对应的键值对——在您的情况下,每个字典都有一个键 ,animalType和该键的不同值。将其转换为您描述的数组将很简单。

于 2013-02-08T22:10:03.793 回答