2013-03-05 29 views
2

我正在嘗試在覈心數據中建立關係。我有一個樹列表,每棵樹都有一個水果列表。所以我有一個Tree實體和一個Fruit實體。在覈心數據中設置父子關係

在代碼中,我會列出樹,例如在表視圖中。當你點擊一棵樹時,它應該顯示一個在樹上生長的水果列表。

我該如何建立這種關係?我需要給Fruit一個名爲tree的屬性嗎?我如何在代碼中設置關係,例如,當我創建Fruit時,如何將它與給定的Tree關聯?

回答

14

Soleil,

這很簡單。首先,你的模型應該如下所示(爲了簡單起見,我跳過了屬性)。

enter image description here

在這種情況下可以Tree具有零個或多個Fruit S(參見fruits關係)。相反,Fruit具有tree關係(反比關係)。

尤其是fruits關係應該像下面

enter image description here

在這裏,你可以看到一個一對多的關係還沒有確定。 刪除規則意味着如果你刪除一棵樹,它的成果也會被刪除。

tree關係就像下面

enter image description here

這是一個一對一的關係,因爲如果附着到樹果實只能存在。 可選標誌未設置。所以,當你創建一個水果時,你也需要指定它的父親(在這種情況下是一棵樹)。 Nullify規則意味着當你刪除一個水果時,核心數據不會刪除與該水果相關的樹。它只會刪除你指定的水果。

當你創建一個Fruit實體,你應該採取類似的

NSManagedObject *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; 
[specificFruit setValue:parentTree forKey:@"tree"]; 

,或者如果你有創造NSManagedObject子類:

Fruit *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; 
specificFruit.tree = parentTree; 

希望有所幫助。

P.S.檢查代碼,因爲我寫了沒有Xcode支持。

+0

不應該樹是一個有多對多關係而不是水果?另一種方式是正確的? – lakesh 2013-03-05 21:08:17

+0

@lakesh也許我沒有解釋得很清楚,但正如我寫的,一個'Tree'可以有零或更多的水果。一個「水果」與一棵樹相關聯。對你起作用嗎? – 2013-03-05 21:12:18

+0

很好的答案,謝謝。我已經完成了大部分工作,但是你填寫了一些有用的細節。 – soleil 2013-03-05 21:36:09