Отношения и сущности в CoreData - PullRequest
3 голосов
/ 19 ноября 2011

У меня есть три сущности, A, B и C.

Где A имеет отношение ко многим с B
, а B имеет отношение ко многим с A

ТогдаC имеет отношение «один к одному (правильная терминология?)» С A и отношение «один к одному» с B.

Однако я хочу, чтобы отношения C с A должны быть экземпляром A, который находится в отношениис B, связанным с C.

Обычно в коде я бы использовал NSArrays вместо отношений, а затем в C сохранял бы индекс нужного экземпляра.Я впервые использую CoreData, поэтому я не уверен насчет большинства из них.

РЕДАКТИРОВАТЬ: Чтобы уточнить:

enter image description here

1 Ответ

1 голос
/ 19 ноября 2011

Во-первых, было бы проще обсудить вашу ситуацию, если бы вы не использовали b для обозначения нескольких разных вещей.На вашей диаграмме четыре отношения;ради обсуждения вы можете назвать их d, e, f и g.

Чтобы ответить на ваш вопрос, вы не можете и не должны включатьвид ограничения, о котором вы говорите в модели.Модель определяет отношения между видами управляемых объектов, но ничего не говорит об отдельных объектах.Обычно лучше пытаться мыслить с точки зрения объектов, когда вы изучаете Базовые Данные, но вы должны знать, что сущности, которые вы определяете в модели, аналогичны таблицам в реляционной базе данных: они определяют, что может бытьхранится, а не то, что код должен или должен (или не должен ) хранить.

Чтобы ограничить Ca одним из A в Cbbsвам нужно будет написать код.Если Ca установлен только в одном месте, вы можете использовать ограничение в этом коде.Если ограничение необходимо для правильной работы C, вы можете вместо этого (или дополнительно) выбрать добавить в установщик Ca проверку, которая подтверждает, что A является одним из разрешенных.Вам также может понадобиться исправить установщик для Cb, чтобы в случае изменения Cb он проверял, что Ca все еще действует, и делает что-то соответствующее, если это не так (снимите Ca, выберите новый Ca, откажитесь принять новый Cb, опубликуйте уведомление, брось исключение, что угодно).

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