2010-08-26 22 views
3

在CoreData表上执行此查询的最有效方式是什么?要使用标准员工数据库模型 - 我希望所有包含员工的部门的“DISTINCT部门标识”都包含工作描述“厨师”。碰巧,这里只有一张表(员工) - 我没有实际的部门表,只有部门ID是重复的。在CoreData中获取不同的ID列表

回答

5

鉴于你所描述的模式,我会执行取得与谓词(格式字符串),如@"jobDescription LIKE 'chef'",然后使用键 - 值编码从结果数组获得独特的价值观:

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

或创建一套:

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

根据问题的大小(多少员工),做内存的最后一步可能会被证明是禁止的。此时,您必须创建一个部门实体并开展工作,确保将适当的员工连接到每个部门。然后,您可以使用诸如@"ANY employees.jobDescription LIKE 'chef'"之类的谓词(格式字符串)对部门进行获取,以获得拥有厨师员工的部门。

+0

谢谢!第二种建议的解决方案适用于我,但我决定重构以避免这种昂贵的操作。 – ed94133 2010-08-27 16:18:48

+0

感谢我的第二部作品gret – 2011-12-20 06:57:11