Как установить отношение объекта объекта Core Data

У меня есть объект 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];

Консоль говорит: Недопустимый тип значения для отношения ко многим: свойство = "entity1"; желаемый тип = NSSet;

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


person Mantvydas    schedule 15.07.2011    source источник


Ответы (1)


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

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

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

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

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

person Chris Frederick    schedule 15.07.2011
comment
то есть вы сказали нам своими словами, что они были отношениями ко-многим, вы сказали нам своим кодом, что они были отношениями к-1, --- мы предполагаем, что ваши слова были правильными, вы хотите несколько объектов entity1 для вашего mainEntity - person bshirley; 16.07.2011
comment
Точно. Конечно, если это так, я бы лично переименовал отношения в firstEntities, secondEntities, thirdEntities или в какую-то другую комбинацию, которая имеет такое же множественное число. - person Chris Frederick; 16.07.2011
comment
Вы знаете, ребята, то, что вы на самом деле сделали, заставило меня понять, что мне нужны отношения «один ко многим», а не сущности, а сущности. Спасибо. И поэтому я сделал это немного иначе. - person Mantvydas; 16.07.2011
comment
@Мантвидас Рад помочь! Хотите поделиться здесь своим ответом или принять этот? - person Chris Frederick; 16.07.2011