在核心数据中设置父子关系

我正在尝试在核心数据中build立关系。 我有一个树列表,每棵树都有一个水果列表。 所以我有一个Tree实体和一个Fruit实体。

在代码中,我将要列出树,例如在表视图中。 当你点击一棵树时,它应该显示一个在树上生长的水果列表。

我如何build立这种关系? 我需要给Fruit一个叫树的属性吗? 而我如何在代码中设置关系,例如,当我创build一个Fruit时,我如何将它与给定的Tree相关联?

太阳城,

这很简单。 首先,你的模型应该如下所示(为了简单起见,我跳过了属性)。

在这里输入图像说明

在这种情况下, Tree可以有零个或更多的Fruit (见fruits关系)。 相反,一个Fruit有一个tree关系(反比关系)。

特别是fruits关系应该如下所示

在这里输入图像说明

在这里,您可以看到已经设置了一对多的关系。 删除规则意味着如果你删除一棵树,其果实也将被删除。

tree关系如下所示

在这里输入图像说明

这是一对一的关系,因为水果只有在附着在树上才能存在。 可选标志未设置。 所以,当你创build一个水果时,你也需要指定它的父亲(在这种情况下是一棵树)。 取消规则意味着当你删除一个水果时,核心数据不会删除与该水果相关的树。 它只会删除你指定的水果。

当你创build一个Fruit实体时,你应该遵循一个相似的path

 NSManagedObject *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; [specificFruit setValue:parentTree forKey:@"tree"]; 

或者如果你有创buildNSManagedObject子类:

 Fruit *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context]; specificFruit.tree = parentTree; 

希望有所帮助。

PS检查代码,因为我没有Xcode支持编写。