Rom*_*ski 3 many-to-many core-data
如何在CoreData中使用多对多关系进行操作?例如:
我有2个实体 - 食谱和配料
CoreData将它们像Recipes << - >> Ingredients链接起来.现在我需要为食谱中的每种成分添加属性"Count".我该怎么做?
谢谢
Core Data负责为您提供对象图一致性维护.因此,如果您使用SQLite存储,Core Data会自动为您创建多对多关系的中间连接表.在您的情况下,您应该显式创建一个中间("连接")实体.中间实体的一个优点是您还可以使用它来向关系添加更多信息 - 例如,"IngredientInfo"实体可能包含"Count"列.所以你的模型应该是这样的:食谱< - >> IngredientInfo << - >成分.
如果你发现这里有些不清楚的地方,我会更新答案.
更新:访问成分和计数
for (IngredientInfo* ingredientInfo in recipe.ingredientInfos) {
Ingredient* ingredient = ingredientInfo.ingredient;
NSNumber* count = ingredientInfo.count;
}
Run Code Online (Sandbox Code Playgroud)
或者快速访问某些食谱中的所有成分使用KVC
NSSet* ingredients = [recipe valueForKeyPath:@"ingredientInfo.ingredient"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2987 次 |
| 最近记录: |