如何使用Core Data中多个实体的属性获取属性值?

时间:2011-08-03 09:12:55

标签: iphone objective-c core-data nsfetchrequest

我有三个这样的实体。

员工:
ID
命名

EmployeeDepartment:
ID
DepartmentID的
雇员

部门:
ID
命名

雇员<< ----> EmployeeDepartment< ---->>系

假设员工和部门有多对多的关系, 我想在“会计”部门获得所有员工姓名?
如果我使用SQL查询,我将简单地使用:
从Employee,EmployeeDepartment,Department中选择employee.name,其中employee.id = employeeDepartment.employeeID和Department.id = EmployeeDepartment.departmentID和Department.name ='Accounting'

但是,我如何在Core Data中做同样的事情呢?

1 个答案:

答案 0 :(得分:0)

核心数据是一个对象图管理器,而不是关系数据库,所以试图强制它进入关系数据库模式会导致痛苦。您的EmployeeDepartment实体就是一个很好的例子;您需要在关系数据库中实现Employee和Department之间的多对多关系,但在Core Data中根本没有必要。相反,只需为Employee一个departments属性和Department employees属性,然后在两个实体之间添加多对多的关系。

现在,如果要获取Accounting中的所有员工,可以使用与Accounting匹配的谓词执行实体Department的获取请求。拥有该对象后,您只需访问其employees属性即可获得员工列表。