iphone - 你能用 NSPredicate 指定 "select unique name from ..."吗?

标签 iphone cocoa cocoa-touch core-data nspredicate

我在核心数据中存储了一些数据,如下所示:

|名称 |标识符|其他_东西 |

我需要在 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/

相关文章:

objective-c - NSGradient 转换为 NSColor

Cocoa:阻止字段编辑器按空格键自动完成

iphone - 如何创建全局导航堆栈?

ios - 尝试打开以前在 Xcode 7 Beta 中打开的项目时,Xcode 6 会抛出错误

iphone - 无法将iPhone设备连接到XCode

ios - NSLocale 大部分是空的 - 属性在哪里?

swift - 某些 TableView View 未重新加载,因为我的 TableView Delegate 未接收 tableView :viewFor:row: for every row

iphone - uitableview 单元格中的自定义删除按钮不起作用

ios - 将 UICollectionViewCell 滚动到背景而不是垂直

iphone - 如何调整 UIModalPresentationFormSheet 的大小?