我在Core Data中存储了一些类似于:
的数据|名字|标识符| other_stuff |
我需要在UITableView中显示名称,但我只想显示具有唯一名称 - 标识符对的名称。所以:
John | 3 | foo
Betty | 4 | foo
Betty | 4 | bar
我只希望查询返回John,Betty。像“从表中选择唯一名称,标识符”这样的东西。
使用NSPredicate做任何事情,或者我是否需要将去掉的字段倒入另一个容器中,然后搜索它?
答案 0 :(得分:10)
核心数据是一个对象图形管理框架,恰好(可选)将该对象图持久保存到SQL持久性存储中。无法查询对象属性,只查询对象。然后,您可以从结果数组中查询实例:
NSArray *instances; //from -[NSManagedObject executeFetchRequest:error:]
NSArray *uniqueNames = [instances valueForKeyPath:@"@distinctUnionOfObjects.name"];
假设名称位于name
属性中。
如果您希望每个用户拥有一个名称,一个id和多个{foo,bar,...},那么您应该将情境建模为具有名称和ID以及多对多关系的用户实体到代表foo / bar / etc的实体
您可以在“键值编码指南”的Collection Operators部分找到有关@distinctUnionOfObjects
(和其他收集运算符)的更多信息。
答案 1 :(得分:9)
由于这是核心数据,请查看-[NSFetchRequest setReturnsDistinctObjects:]
。