2

我有一个实体 mainEntity,它与三个不同的实体 entity1、entity2 和 entity3 具有三个一对多关系(关系以它们所指的对象命名)。

entity mainEntity
attribute name
relation entity1
relation entity2
relation entity3

这三个实体与这个 mainEntity 有一对多的反向关系(都一样,这里是第一个的例子)。

entity entity1
attribute name
relation mainEntity

所以总的来说,它是来自一个 mainEntity 的三个多对多关系。

现在我需要将mainEntity的三个关系设置为object1、object2和object3,分别是entity1、entity2和entity3的实例。

我不能这样做:

MainEntity *myEntity = (MainEntity *)[NSEntityDescription
insertNewObjectForEntityForName:@"myEntity" inManagedObjectContext:context];
[myEntity setEntity1:object1];
[myEntity setEntity2:object2];
[myEntity setEntity3:object3];

控制台说:对多关系不可接受的值类型:property = "entity1"; 所需类型 = NSSet;

如何正确设置它们?

4

1 回答 1

2

在我看来,您正在尝试将单个实体分配给一对多关系。如果您只打算将entity1,entity2entity3to 每个点一次指向一个实体,那么解决此问题的最简单(也是正确)的方法是将这些关系从一对多更改为一对一。但是,如果您确实希望这些中的每一个都是一对多的关系,我会替换

[myEntity setEntity1:object1];
[myEntity setEntity2:object2];
[myEntity setEntity3:object3];

使用以下自动生成的对多关系变更器方法

[myEntity addEntity1Object:object1];
[myEntity addEntity2Object:object2];
[myEntity addEntity3Object:object3];

有关更多信息,请查看核心数据编程指南中的托管对象访问器方法

于 2011-07-15T23:55:34.037 回答