CoreData 可以返回唯一的实体属性吗?
Posted
技术标签:
【中文标题】CoreData 可以返回唯一的实体属性吗?【英文标题】:Can CoreData return unique entity attributes? 【发布时间】:2013-02-08 21:51:44 【问题描述】:假设我有一个具有名为 animalType 的属性的实体。 在核心数据中,我有 10,000 个这样的实体,并且有未知数量的不同动物类型,例如。狗、猫、鸟等 我可以告诉核心数据获取每种动物类型并返回类似于以下内容的数组:
@[Dog, Cat, Bird, Fish, ...]
我不想获取实体数组,我只想要animalTypes
的唯一列表。
不应该重复animalType
。
【问题讨论】:
@Emil 感谢您的编辑! 不客气!有关格式和问题风格的提示,请参阅editing help :) 【参考方案1】: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" ...]
【讨论】:
这也是一个出色的答案!谢谢!【参考方案2】:是的,你需要NSFetchRequest
的setReturnsDistinctResults:
方法,结合setPropertiesToFetch:
和setResultType: NSDictionaryResultType
。基本上,获取将返回一个字典数组,而这些字典又将包含与您获取的特定属性相对应的键值对——在您的情况下,每个字典都有一个键 animalType
和一个不同的值那把钥匙。将其转换为您所描述的数组将很简单。
【讨论】:
这看起来很棒!我会试一试,然后回来接受您的回答。以上是关于CoreData 可以返回唯一的实体属性吗?的主要内容,如果未能解决你的问题,请参考以下文章