2017-02-15 20 views
0

У меня есть 2 объекта, в которых имеется всего 12 свойств из 3 вариантов минимума, макс и среднего значения для определенного типа полей. Поэтому я реорганизовал 2 объекта на 3 объекта, сделав третий объект как «Значения», который содержит 3 свойства: минимальный, макс и средний. И уменьшил 12 свойств на 4 отношения. Вот реплика моих моделей в качестве примера на изображении ниже.Однонаправленное отношение данных ядра к одному

enter image description here

Как вы можете видеть, у меня есть один-к-одному однонаправленные отношения с 3-го лица. Однако Xcode продолжает жаловаться на «обратные» отношения.

enter image description here

По мне я могу добавить 4 отношения в «ценности» и обновить все, чтобы стать «обратное», однако это не кажется правильным решением, поскольку, когда второй субъект получает привязан к «Значения», у него будут дополнительные отношения 3 ноль, а в случае первого - 1 дополнительная связь nil. Оба они не нужны.

Рефакторинг «Значений» и разделение его на два похожих объекта также не является хорошим решением, я полагаю.

Следовательно, кто-нибудь может предложить мне, какой правильный подход или передовая практика решить эту проблему. Дайте мне знать, если я не знаю, где бы вы ни описывали мою проблему.

ответ

2

Основываясь на вашем описании, я бы отменил рефакторинг и вернусь к использованию свойств вместо отношений. Вы добавляете сложность без реальной выгоды, а объект Values (как вы находят) слишком общий, чтобы действительно быть полезным или значимым. Этот рефакторинг не служит никакой полезной цели; не исправляйте это, верните его.

+0

Да, я согласен с тем, что он слишком общий. Позвольте мне подождать еще несколько лучших решений до завтра, иначе вам придется либо вернуться, либо реорганизовать лучше. –

+0

Downvoted, это не решение или действительно ответ на проблемы OP, это комментарий с мнением. Пожалуйста, используйте раздел комментариев для этих целей. –

+0

@ Вопрос: «Какой правильный подход или наилучшая практика для решения этой проблемы», который дает этот ответ. Вы можете не согласиться с этим ответом, но это ответ. – Martin

0

Вы должны изучить Weak Relationships (Fetched Properties), как правильно управлять отношениями и найти решение для вашего кода ошибки.

Большинство объектных отношений по сути являются двунаправленными. Если отдел имеет отношение ко многим сотрудникам, работающим в отделе , существует обратная связь от сотрудника с отделом , который является одним-единственным. Основным исключением является извлеченное свойство, , которое представляет собой слабое одностороннее отношение - нет связи от пункта назначения до источника.

Кроме того, если вы хотите, чтобы сделать вещи проще, вы должны смотреть на (если это возможно) избежать 3 объекта и имеют один объект или два объекта, с propertiesToFetch из NSFetchRequest в виду. Таким образом, вы можете получить свой Entity, сохраните свойства в одном Entity, , но только получите свойства, которые вы хотите, и избегайте чрезмерных затрат на извлечение и потребление ресурсов, которые вы не собираетесь использовать.

Какая бы ни была ваша потребность, у вас есть варианты. GL

Смежные вопросы