假设我有一个名为animalType的实体。 在核心数据中,我有10,000个这样的实体,并且有不明数量的不同动物类型,例如。狗,猫,鸟等 我可以告诉核心数据获取每种动物类型并返回类似于:
的数组@[Dog, Cat, Bird, Fish, ...]
我不想获取一组实体,我只想要一个animalTypes
的唯一列表。
不应重复animalType
。
答案 0 :(得分: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" ...]
答案 1 :(得分:2)
是的,您需要NSFetchRequest
的{{1}}方法,以及setReturnsDistinctResults:
和setPropertiesToFetch:
。基本上,fetch将返回一个字典数组,这些字典将依次包含与您获取的特定属性相对应的键值对 - 在您的情况下,每个字典都有一个键setResultType: NSDictionaryResultType
和一个不同的该键的值。将其转换为类似于您描述的数组的数组将是直截了当的。