我有一个实体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";
如何正确设置它们?
在我看来,您是在尝试将单个实体分配给一对多关系。如果您一次只打算将entity1
、entity2
和entity3
的每个点都指向单个实体,那么解决这个问题的最简单(也是正确)的方法是将这些关系从一对多更改为一对一。但是,如果您确实希望它们中的每一个都是一对多关系,那么我将替换
[myEntity setEntity1:object1];
[myEntity setEntity2:object2];
[myEntity setEntity3:object3];
使用以下自动生成的对多关系变量方法
[myEntity addEntity1Object:object1];
[myEntity addEntity2Object:object2];
[myEntity addEntity3Object:object3];
有关更多信息,请参阅核心数据编程指南中的管理对象访问器方法。