CoreData多对多关系

时间:2013-02-20 06:34:29

标签: core-data many-to-many

如何在CoreData中使用多对多关系进行操作? 例如:

我有2个实体 - 食谱&成分

CoreData将它们链接为食谱<< - >>配料。 现在我需要为食谱中的每种成分添加属性“Count”。我该怎么办?

由于

1 个答案:

答案 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"];