Как установить отношение объекта Core Data - PullRequest
2 голосов
/ 16 июля 2011

У меня есть сущность mainEntity с тремя отношениями «один ко многим» с тремя разными сущностями entity1, entity2 и entity3 (отношения названы в честь объектов, на которые они ссылаются).

entity mainEntity
attribute name
relation entity1
relation entity2
relation entity3

Эти три сущности имеют обратные отношения один-ко-многим с этим mainEntity (все равно, вот пример first).

entity entity1
attribute name
relation 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;

Как правильно их настроить?

1 Ответ

2 голосов
/ 16 июля 2011

Мне кажется, что вы пытаетесь назначить одну сущность для отношения один-ко-многим . Если вы намеревались только для entity1, entity2 и entity3 для каждой точки по одному объекту за раз, самый простой (и правильный) способ исправить это - изменить эти отношения с одного на множество. один в один. Однако, если вы действительно хотите, чтобы каждое из них было отношением один-ко-многим, я бы заменил

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

со следующими автоматически сгенерированными методами-мутаторами отношения ко-многим

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

Для получения дополнительной информации см. Методы доступа к управляемым объектам в Руководство по программированию основных данных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...