我试图在核心数据中建立关系。我有一个树木列表,每棵树都有一个水果列表。所以我有一个Tree
实体和一个Fruit
实体。
在代码中,我想在表格视图中列出树。当您单击树时,它应该显示在该树上生长的水果列表。
如何建立这种关系?我是否需要为Fruit
提供一个名为tree的属性?如何在代码中设置关系,例如,当我创建Fruit
时,如何将其与给定的Tree
相关联?
答案 0 :(得分:17)
马戏团,
这很简单。首先,您的模型应如下所示(为简单起见,我跳过了属性)。
在这种情况下,Tree
可以有零个或多个Fruit
s(请参阅fruits
关系)。相反,Fruit
具有tree
关系(反比关系)。
特别是,fruits
关系应如下所示
在这里,您可以看到已经设置了多对多关系。 删除规则表示如果删除树,其果实也将被删除。
tree
关系类似于以下
这是一对一的关系,因为水果只有在附着到树上才能存在。未设置可选标志。因此,当您创建水果时,您还需要指定其父级(在本例中为树)。 Nullify 规则意味着当您删除水果时,Core Data不会删除与该水果相关联的树。它只会删除您指定的水果。
创建Fruit
实体时,您应该遵循类似的路径
NSManagedObject *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context];
[specificFruit setValue:parentTree forKey:@"tree"];
或者如果你有创建NSManagedObject
子类:
Fruit *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context];
specificFruit.tree = parentTree;
希望有所帮助。
P.S。检查代码,因为我写的没有Xcode支持。