这是一个关于如何最好地组织 Core Data 中 NSManagedObjects 之间关系的概念性问题。
当出现循环依赖时,如何在 Core Data 中组织实体?
例如,假设我正在做一个社交食谱应用程序。这个应用程序允许您根据谁在制作每个食谱以及谁在购买每种食材来组织膳食。此外,每个食谱都是由不同的人创建的。因此,我提出以下 NSManagedObjects 及其各自的属性和关系:
Chef
= uniqueID (String), username (String), Skill (String)
>>
recipesToMake = (to-many) Recipe
>>
ingredientsToBuy = (to-many)Ingredient
Recipe
= uniqueTitle (String), authorID (String)
>>
成分 = (to-many)Ingredient
Ingredient
= 名称(字符串)、卡路里(整数 64)
问题
[_] 如果我有多个Chef
's 在同一个配方上工作,这是否意味着同一Recipe
对象的多个副本存储在 Core Data 中,每个副本属于一个单独的Chef
? 如果是这样,可以吗?如果没有,我如何Recipe
在 Core Data 中创建一个对象并让多个Chef
' 指向它,而它Chef
本身可以通过 ? 指向多个Recipe
对象recipesToMake
?
[_] 如果给定一个食谱,我将如何检查Chef
分配给它的 's ?我会在 Core Data 中获取那些Chef
指向Recipe
具有给定uniqueTitle
属性的对象的对象吗?
[_] 由于一个Chef
对象可以指向许多Recipe
对象,因此将每个对象的作者存储Recipe
为包含作者唯一 ID 的属性是否正确Recipe
?我最初会考虑创建从Recipe
to-one的关系,但这会在和对象Chef
之间创建另一个循环依赖关系。Chef
Recipe
[_] 再一次,如果Chef
can point to-many Ingredient
objects viaingredientsToBuy
并且Recipe
can point-many Ingredient
objects via ingredients
,那么CoreData中是否会有同一个对象的多个副本Ingredient
?
[_] 如果我允许Recipe
对象拥有任意数量的作者,我将如何实现它?使用与Chef
对象的关系似乎会创建循环依赖关系,而使用连接到Chef
uniqueID
's 的属性似乎需要预先指定每个Recipe
对象的最大作者数。