这是一个关于如何最好地组织 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?我最初会考虑创建从Recipeto-one的关系,但这会在和对象Chef之间创建另一个循环依赖关系。ChefRecipe
[_] 再一次,如果Chefcan point to-many Ingredientobjects viaingredientsToBuy并且Recipecan point-many Ingredientobjects via ingredients,那么CoreData中是否会有同一个对象的多个副本Ingredient?
[_] 如果我允许Recipe对象拥有任意数量的作者,我将如何实现它?使用与Chef对象的关系似乎会创建循环依赖关系,而使用连接到Chef uniqueID's 的属性似乎需要预先指定每个Recipe对象的最大作者数。