我正在嘗試在覈心數據中建立關係。我有一個樹列表,每棵樹都有一個水果列表。所以我有一個Tree
實體和一個Fruit
實體。在覈心數據中設置父子關係
在代碼中,我會列出樹,例如在表視圖中。當你點擊一棵樹時,它應該顯示一個在樹上生長的水果列表。
我該如何建立這種關係?我需要給Fruit
一個名爲tree的屬性嗎?我如何在代碼中設置關係,例如,當我創建Fruit
時,如何將它與給定的Tree
關聯?
我正在嘗試在覈心數據中建立關係。我有一個樹列表,每棵樹都有一個水果列表。所以我有一個Tree
實體和一個Fruit
實體。在覈心數據中設置父子關係
在代碼中,我會列出樹,例如在表視圖中。當你點擊一棵樹時,它應該顯示一個在樹上生長的水果列表。
我該如何建立這種關係?我需要給Fruit
一個名爲tree的屬性嗎?我如何在代碼中設置關係,例如,當我創建Fruit
時,如何將它與給定的Tree
關聯?
Soleil,
這很簡單。首先,你的模型應該如下所示(爲了簡單起見,我跳過了屬性)。
在這種情況下可以Tree
具有零個或多個Fruit
S(參見fruits
關係)。相反,Fruit
具有tree
關係(反比關係)。
尤其是fruits
關係應該像下面
在這裏,你可以看到一個一對多的關係還沒有確定。 刪除規則意味着如果你刪除一棵樹,它的成果也會被刪除。
的tree
關係就像下面
這是一個一對一的關係,因爲如果附着到樹果實只能存在。 可選標誌未設置。所以,當你創建一個水果時,你也需要指定它的父親(在這種情況下是一棵樹)。 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支持。
不應該樹是一個有多對多關係而不是水果?另一種方式是正確的? – lakesh 2013-03-05 21:08:17
@lakesh也許我沒有解釋得很清楚,但正如我寫的,一個'Tree'可以有零或更多的水果。一個「水果」與一棵樹相關聯。對你起作用嗎? – 2013-03-05 21:12:18
很好的答案,謝謝。我已經完成了大部分工作,但是你填寫了一些有用的細節。 – soleil 2013-03-05 21:36:09