如何设置核心数据实体对象的关系



我有一个实体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";

如何正确设置它们?

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

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

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

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

有关更多信息,请参阅核心数据编程指南中的管理对象访问器方法。

相关内容

  • 没有找到相关文章

最新更新