我正在尝试在 Core Data 中建立关系。我有一个树列表,每棵树都有一个水果列表。所以我有一个Tree
实体和一个Fruit
实体。
在代码中,我想在表格视图中列出树。当您单击一棵树时,它应该会显示该树上生长的水果列表。
我该如何建立这种关系?我需要给Fruit
一个名为树的属性吗?以及如何在代码中设置关系,例如当我创建一个Fruit
如何将它与给定的关联Tree
?
我正在尝试在 Core Data 中建立关系。我有一个树列表,每棵树都有一个水果列表。所以我有一个Tree
实体和一个Fruit
实体。
在代码中,我想在表格视图中列出树。当您单击一棵树时,它应该会显示该树上生长的水果列表。
我该如何建立这种关系?我需要给Fruit
一个名为树的属性吗?以及如何在代码中设置关系,例如当我创建一个Fruit
如何将它与给定的关联Tree
?
太阳,
这很简单。首先,您的模型应该如下所示(为简单起见,我跳过了属性)。
在这种情况下,aTree
可以有零个或多个Fruit
s(参见fruits
关系)。相反,aFruit
有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;
希望有帮助。
PS 检查代码,因为我是在没有 Xcode 支持的情况下编写的。