CoreData:在多对多关系中多次添加同一对象

问题描述:

有多种方式可以多次添加同一对象,即默认的CoreData一对多关系吗?CoreData:在多对多关系中多次添加同一对象

我有一个表食谱在里面,和一个表成分

这就是我的目标在:

Apple cake 
    - Apple 
    - Apple 
    - Apple 
    - Sugar 
    - Flour 

Other cake 
    - Apple 
    - Sugar 
    - Flour 
    - Flour 

默认情况下,addIngredientsObject - 方法只会增加成分如果没有在配方中存在。

我一定要创建自己的表是这样的:

Recipe ID 
Ingredient ID 
Count 

或是否有可能与一对多的关系?

+2

如果你的对象实际上是食谱,你最有可能需要一个中间实体,它有一个数量属性和与成分的关系。如果你需要500克面粉,那么添加500个面粉可能不是一个好主意;-) –

+1

[CoreData多对多关系]的可能重复(http://stackoverflow.com/questions/14973660/coredata-many-一对多关系) –

+0

@MatthiasBauch确实,你会如何添加一半苹果? :-) – Fogmeister

我愿意听这个Matthias。

建立关系一样......

Recipe <->> IngredientMeasure <<-> Ingredient. 

即配方可以有很多成分的措施。成分测量只有一种成分。

但要回答你的问题。

在“一对多”关系中,关系映射到NSSetNSSet是一个独特的对象集合。

因此,如果您创建一个实体,称为apple,做类似...

[myRecipe addIngredientObject:apple]; 
[myRecipe addIngredientObject:apple]; 
[myRecipe addIngredientObject:apple]; 
[myRecipe addIngredientObject:apple]; 

你最终仍要只有一个苹果,因为它是将同一项目的NSSet中,将停止重复。