如何使用CoreData中的多对多关系进行操作? 例如:CoreData多对多关系
我有2个实体 - 食谱&成份
CoreData链接他们喜欢食谱< < - >>成分。 现在我需要为配方中的每种配料添加属性“计数”。我该怎么做?
谢谢
如何使用CoreData中的多对多关系进行操作? 例如:CoreData多对多关系
我有2个实体 - 食谱&成份
CoreData链接他们喜欢食谱< < - >>成分。 现在我需要为配方中的每种配料添加属性“计数”。我该怎么做?
谢谢
核心数据为您处理对象图一致性维护。因此,如果您使用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"];
那你的意思是“我需要添加属性‘计数’对于每种成分'?这是否意味着您想要添加新的NSAttributeDescription,或只是用新值更新此属性? – 2013-02-20 06:58:03
@MarkKryzhanouski 食谱有3列:姓名,thumbImage,配料成分 已经2列:名称,配方 Recipe.ingredients <<-->> Ingredients.recipe 现在我需要添加列“伯爵”在一些成分(计一些食谱) – Romowski 2013-02-20 08:25:40