2013-02-20 81 views
3

如何使用CoreData中的多對多關係進行操作? 例如:CoreData多對多關係

我有2個實體 - 食譜&成份

CoreData鏈接他們喜歡食譜< < - >>成分。 現在我需要爲配方中的每種配料添加屬性「計數」。我該怎麼做?

謝謝

+0

那你的意思是「我需要添加屬性‘計數’對於每種成分'?這是否意味着您想要添加新的NSAttributeDescription,或只是用新值更新此屬性? – 2013-02-20 06:58:03

+0

@MarkKryzhanouski 食譜有3列:姓名,thumbImage,配料成分 已經2列:名稱,配方 Recipe.ingredients <<-->> Ingredients.recipe 現在我需要添加列「伯爵」在一些成分(計一些食譜)​​ – Romowski 2013-02-20 08:25:40

回答

5

核心數據爲您處理對象圖一致性維護。因此,如果您使用SQLite存儲,Core Data會自動爲您創建用於多對多關係的中間連接表。在你的情況下,你應該明確地創建一箇中間(「加入」)實體。中間實體的一個優點是您也可以使用它來添加更多關於 關係的信息,例如「IngredientInfo」實體可能包含「計數」列。所以你模型應該看起來像:食譜< - >> IngredientInfo < < - >成分

如果您發現不清楚的地方,我會更新答案。

更新:訪問成分和數量

for (IngredientInfo* ingredientInfo in recipe.ingredientInfos) { 
     Ingredient* ingredient = ingredientInfo.ingredient; 
     NSNumber* count = ingredientInfo.count; 
    } 

還是要快速訪問某些配方中的所有成分,使用KVC

NSSet* ingredients = [recipe valueForKeyPath:@"ingredientInfo.ingredient"]; 
+0

我認爲它應該是'IngredientInfo <<-->成分',否則你可以使用一種成分只用於單一配方。 – 2013-02-20 08:54:19

+0

@Mark 謝謝!這是我需要的 – Romowski 2013-02-20 09:04:57

+0

@Mark 當我選擇一些配方時,我應該如何得到配料和他們的數量? – Romowski 2013-02-20 11:40:11