3

CoreData中的多对多关系如何操作?例如:

我有 2 个实体 - 食谱和配料

CoreData 像Recipes <<-->> Ingredients 一样链接它们。现在我需要为配方中的每个成分添加属性“计数”。我该怎么做?

谢谢

4

1 回答 1

5

Core Data 会为您维护对象图的一致性。因此,如果您使用 SQLite 存储,Core Data 会自动为您创建多对多关系的中间连接表。在您的情况下,您应该显式创建一个中间(“join”)实体。中间实体的一个优点是您还可以使用它向关系中添加更多信息——例如,“IngredientInfo”实体可能包含“计数”列。所以你的模型应该看起来像:Recipe <-->> IngredientInfo <<--> Ingredient

如果您在这里发现不清楚的地方,我会更新答案。

更新:访问成分和计数

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

或使用 KVC 快速访问某些配方中的所有成分

NSSet* ingredients = [recipe valueForKeyPath:@"ingredientInfo.ingredient"];
于 2013-02-20T08:45:14.940 回答