我在核心数据中存储了一些数据,如下所示:
|名称 |标识符|其他_东西 |
我需要在 UITableView 中显示名称,但我只想显示具有唯一名称标识符对的名称。所以对于:
John | 3 | foo
Betty | 4 | foo
Betty | 4 | bar
我只想查询返回 John, Betty。类似于“从表中选择唯一名称、标识符。”
有什么方法可以使用 NSPredicate 执行此操作,或者我是否需要将重复数据删除的字段倒入不同的容器中,然后进行搜索?
最佳答案
Core Data 是一个对象图管理框架,它恰好(可选)将该对象图持久保存到 SQL 持久存储中。没有办法查询对象属性,只能查询对象。然后,您可以从结果数组中查询实例:
NSArray *instances; //from -[NSManagedObject executeFetchRequest:error:]
NSArray *uniqueNames = [instances valueForKeyPath:@"@distinctUnionOfObjects.name"];
假设名称位于 name
属性中。
如果您想要的是每个用户都有一个名称、一个 id 和多个 {foo,bar,...},那么您应该将这种情况建模为具有名称和 id 以及一对多关系的用户实体代表 foo/bar/etc 的实体。
您可以在Collection Operators中找到有关@distinctUnionOfObjects
(和其他集合运算符)的更多信息。键值编码指南部分。
关于iphone - 你能用 NSPredicate 指定 "select unique name from ..."吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886044/