在CoreData中获取不同的ID列表

时间:2010-08-26 19:18:38

标签: iphone core-data distinct-values

在CoreData表上执行此查询的最有效方法是什么?要使用标准员工数据库模型 - 我希望所有包含职位描述为“chef”的员工的部门都使用DISTINCT部门ID。实际上,这里只有一个表(Employees)相关 - 我实际上没有一个department表,只有部门ID被重复。

1 个答案:

答案 0 :(得分:5)

根据您描述的模式,我将使用类似@"jobDescription LIKE 'chef'"的谓词(格式字符串)执行提取,然后使用键值编码从结果数组中获取唯一值:

[result valueForKeyPath:@"@distinctUnionOfValues.departmentID"];

或创建一个集合:

NSSet *deparmentIDs = [NSSet setWithArray:[result valueForKey:@"departmentID"]];

根据问题的大小(有多少员工),在内存中执行最后一步可能会令人望而却步。此时,您必须创建一个部门实体并开展工作以确保将适当的员工连接到每个部门。然后,您可以使用谓词(格式字符串)(例如@"ANY employees.jobDescription LIKE 'chef'")来获取部门,以获得拥有主厨员工的部门。