2012-03-24 76 views
0

我想知道是否有可能在覈心數據中「重建」關係。我創建我的實體時,基本上搞砸了,從SQL服務器獲取數據時,我將實體填充爲表(一個表一個表),現在看起來關係不起作用。iOS CoreData - 重建關係

讓我們舉個例子:

我建立了我的模型,我的兩個實體(部門和員工),有關係的一個一對多「myRelationWithDepartment」(一個部門的許多員工),併產生被管理對象相應地進行分類。

我從我的SQL服務器中獲取了表部門和表員工,並將所有員工插入到實體員工中,然後才(因爲我必須檢索第一個員工)實體部門中的所有部門,使用核心數據,保存上下文等一切都很好,只是關係不起作用。

現在我可以對部門或員工進行提取請求,它工作正常。但是,如果我檢索僱員和做到這一點:

[[anEmployee myRelationWithDepartment] departmentName]; 

它返回零,沒有編譯警告或錯誤,它只是似乎沒有部門被鏈接到僱員。

所以我假設關係不起作用。

我已經在模型中包含了我在SQL表中的「id」,所以我可以手動鏈接它們(但我實際上有多個實體)。


我已經通過核心 - 數據導向消失,發現這一點:

[aDepartment.employees ADDOBJECT:newEmployee]; // 不要這樣做!

然後KVO更改通知不會發出,反相關不會正確更新。

回想一下,點簡單地調用存取方法,所以對於相同的原因:

[[aDepartment員工] ADDOBJECT:newEmployee]; //不要這樣做!

這就是爲什麼我假設關係形狀很糟糕。有沒有辦法重建之後的關係(因爲我在模型之間共享一些id的實體)?

回答

0

我挖了蘋果的文檔和關係更需要手動填寫:

要創建的關係 「鏈接」:

anEmployee.myRelationWithDepartment = departmentObject; 

或者,你可以使用:

[department addEmployeeObject:anEmployee]; 

然後,在獲取對象時,您可以訪問相關實體的屬性。

問題是,核心數據是「出售」的,因爲一切事情本身都是相當的,實際上它看起來更乍一看。

+0

公平地說,這些事情在文檔中有解釋。當您第一次使用框架時,閱讀文檔非常重要。 Apple甚至在文檔中提到Core Data是一個高級框架。 – sosborn 2012-03-24 22:33:23

+0

是的,你是對的,它在文檔中。我已經閱讀過,但有些事情只有在你遇到問題時纔有意義,而不是以前的讀數。另一個讓我在文檔中感到困惑的是,他們經常爲所有內容選擇相同的名稱(例如在本例中,在文檔中它與實體,關係等名稱「部門」相同),這無助於說清楚。 – moxy 2012-03-25 07:05:53