2009-12-11 91 views
6

我有存储在核心数据的一些数据,看起来像:您可以指定与NSPredicate“从......选择唯一的名称”?

|名称|标识符| other_stuff |

我需要在一个UITableView中显示的名字,但我只想要显示具有独特的名称标识符对的名称。因此适用于:

John | 3 | foo 
Betty | 4 | foo 
Betty | 4 | bar 

我只希望查询返回John,Betty。就像“选择唯一名称,来自表格的标识符”。

任何方式与NSPredicate做到这一点,或者我需要将de-duped域倒入不同的容器,然后搜索?

回答

10

核心数据是一个对象图表管理框架,恰好(可选地)持续该对象图到SQL持久存储中。没有办法查询对象属性,只是对象。您可以查询实例然后,从结果数组:

NSArray *instances; //from -[NSManagedObject executeFetchRequest:error:] 
NSArray *uniqueNames = [instances valueForKeyPath:@"@distinctUnionOfObjects.name"]; 

假设名称是name财产。

如果你想让每个用户都有一个名字,一个id和多个{foo,bar,...},那么你应该把这个情况建模为一个用户实体,名字和id以及to-many与表示foo/bar /等的实体的关系。

关键值编码指南的Collection Operators部分中提供了有关@distinctUnionOfObjects(和其他收集操作员)的更多信息。

相关问题