2011-08-03 33 views
0

我有三個這樣的實體。
如何使用來自Core Data中多個實體的屬性來獲取屬性值?

員工:
ID


EmployeeDepartment:
ID
DepartmentID的
僱員

部:
ID


員工< < ----> EmployeeDepartment < ---- >>部門

假設員工和部門有很多,一對多的關係, 我想在「會計」部門所有員工的名字呢?
如果我使用SQL查詢,我會簡單地使用:
從員工,EmployeeDepartment,系選擇employee.name其中employee.id = employeeDepartment.employeeID和Department.id = EmployeeDepartment.departmentID和Department.name =「會計'

但是,如何在Core Data中做同樣的事情?

回答

0

核心數據是一個對象圖管理器,而不是關係數據庫,所以試圖強制它進入關係數據庫模式會導致痛苦。你的EmployeeDepartment實體就是一個很好的例子。您需要在關係數據庫中實現Employee和Department之間的多對多關係,但在Core Data中根本沒有必要。相反,只要給員工一個departments屬性和一個部門一個employees屬性,然後在兩個實體之間添加一對多關係。

現在,如果您想要獲取會計中的所有員工,請使用與會計相匹配的謂詞對實體部門執行提取請求。一旦擁有該物品,您只需訪問其employees屬性即可獲取員工名單。

+0

由於實體部門由許多員工組成,因此有許多部門對象包含相同的department.name但具有不同的department.employees。如果會計部門有十名員工,實體部門中有十個對象具有相同的名稱「會計」? –

+0

對不起 - 錯過了多對多的關係。因此,員工一次可以屬於多個部門?看起來似乎應該有一對多的關係:一個部門可以有很多員工,但是任何給定的員工只有一個部門。要回答你的問題,雖然...不,如果有十名員工在會計中,你仍然只有一個會計部門。 「僱員」屬性的值是包含該部門所有員工的集合。 – Caleb

+0

某個員工可能有多個部門,因爲他可能是管理多個部門的經理。 那麼,我有一個財產「僱員」是一個集合的困難。我使用GUI構建器在xcode中添加屬性。它只允許我使用整數,字符串,日期等... 那麼,你是否建議我應該放棄那個構建器? –

相關問題