5

我正在尝试在 Core Data 中建立关系。我有一个树列表,每棵树都有一个水果列表。所以我有一个Tree实体和一个Fruit实体。

在代码中,我想在表格视图中列出树。当您单击一棵树时,它应该会显示该树上生长的水果列表。

我该如何建立这种关系?我需要给Fruit一个名为树的属性吗?以及如何在代码中设置关系,例如当我创建一个Fruit如何将它与给定的关联Tree

4

1 回答 1

17

太阳,

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

在此处输入图像描述

在这种情况下,aTree可以有零个或多个Fruits(参见fruits关系)。相反,aFruittree关系(逆关系)。

特别是,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 支持的情况下编写的。

于 2013-03-05T20:45:36.190 回答