Создание нескольких отношений между объектами - PullRequest
0 голосов
/ 28 августа 2010

У меня есть базовая модель данных с 2 сущностями: Коллекция и Изображение. Между коллекцией и изображением существует отношение один ко многим, что отражается с помощью метода доступа к изображениям на стороне коллекции и доступа к коллекции на стороне изображения.

Существует дополнительное отношение, называемое keyImage, которое представляет собой соотношение 1: 1 между коллекцией и изображением. Одним из изображений в коллекции является ключевое изображение, и я смоделировал это, создав дополнительные отношения 1: 1. У этого есть метод доступа, называемый keyImage в Collection и isKeyImageFor в Image.

Я могу работать с этой моделью в основном нормально, но есть одна вещь, которая не работает.

// Add an image as the key image.
coll.keyImage = keyImage;

// Add the image to the collection
[coll addImagesObject:keyImage];

Обе эти строки работают независимо. Однако, если я сделаю и то, и другое (изображение должно быть в коллекции и назначено в качестве keyImage), то keyImage в конечном итоге будет нулевым после сохранения данных. Это как если бы отношение 1: N обнуляет отношение 1: 1, даже если они используют отдельные ключи и методы доступа.

Есть идеи, как мне заставить это работать?

Ответы [ 2 ]

0 голосов
/ 29 августа 2010

Не думаю, что вы можете заставить Core Data делать это. Вы создали два противоречивых отношения.

Возможно, добавьте свойство isKeyImage к объекту Image, и тогда вы сможете извлечь одно изображение с этим набором свойств.

Или оставьте ключевое изображение отдельно от изображений. К сожалению, я думаю, что вам понадобится отдельный объект KeyImage, определенный в Core Data, с его собственными отношениями из Collection. Я был бы рад узнать, что вы можете создать несколько ссылок между одними и теми же объектами.

0 голосов
/ 28 августа 2010

Столкновение имени переменной «keyImage»?

coll.keyImage = keyImageObject;

[coll addImagesObject: keyImageObject];

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