CoreData中的多对多关系如何操作?例如:
我有 2 个实体 - 食谱和配料
CoreData 像Recipes <<-->> Ingredients 一样链接它们。现在我需要为配方中的每个成分添加属性“计数”。我该怎么做?
谢谢
CoreData中的多对多关系如何操作?例如:
我有 2 个实体 - 食谱和配料
CoreData 像Recipes <<-->> Ingredients 一样链接它们。现在我需要为配方中的每个成分添加属性“计数”。我该怎么做?
谢谢
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"];