如何在CoreData中使用多对多关系进行操作? 例如:
我有2个实体 - 食谱&成分
CoreData将它们链接为食谱<< - >>配料。 现在我需要为食谱中的每种成分添加属性“Count”。我该怎么办?
由于
答案 0 :(得分:5)
Core Data会为您处理对象图一致性维护。因此,如果您使用SQLite存储,Core Data会自动为您创建多对多关系的中间连接表。在您的情况下,您应该显式创建一个中间(“连接”)实体。中间实体的一个优点是您还可以使用它来添加更多信息 关系 - 例如“IngredientInfo”实体可能包含“计数”列。因此,您的模型应如下所示: Recipe< - >> IngredientInfo< - >成分即可。
如果您发现此处不清楚的地方,我会更新答案。
更新:访问成分和计数
for (IngredientInfo* ingredientInfo in recipe.ingredientInfos) {
Ingredient* ingredient = ingredientInfo.ingredient;
NSNumber* count = ingredientInfo.count;
}
或者快速访问某些配方使用KVC中的所有成分
NSSet* ingredients = [recipe valueForKeyPath:@"ingredientInfo.ingredient"];