Предупреждение об обратных отношениях - спросите практики по использованию обратных отношений - PullRequest
4 голосов
/ 04 февраля 2010

У меня есть таблица Порядка, которая содержит информацию о конкретном заказе (когда он начинается, сколько человек и т. Д.), И эта таблица Порядка имеет отношение «Многие» к таблице «Пункт меню». Я называю эти отношения "orderItems".

Компилятор предупреждает меня: «Отношение Order.orderedItems - ко многим не имеет обратного: это расширенный параметр (ни один объект не может находиться в нескольких местах назначения для определенного отношения)»

Как вы обычно делаете для обратных отношений? Нужно ли создавать новое отношение в пункте меню, чтобы указывать обратно на порядок, и устанавливать обратное отношение к "orderItems"? (На самом деле у меня нет причин сохранять эти данные в таблице пунктов меню)

Кто-то может объяснить мне, почему, или, по крайней мере, указать мне причину, по которой мне нужно создать обратную связь в таблице пунктов меню.

Заранее спасибо,

Ответы [ 2 ]

18 голосов
/ 04 февраля 2010

Я столкнулся с этим предупреждением и проблемой тоже! Вот что тебе нужно знать ...

Допустим, у вас есть две таблицы - автомобили и водители. Вы определяете отношение один-к-одному - один автомобиль одному водителю, но не наоборот.

Так что теперь, если вы создадите автомобиль и назначите ему драйвер, если вы удалите драйвер позже, а затем попытаетесь получить доступ к car.driver, ваша программа потерпит крах. Car.driver не будет равен нулю - он вылетит из вашей программы.

Итак, если вы не создадите инверсию, вы никогда не сможете проверить, что-то ноль, и вы вообще не сможете безопасно работать с car.driver, если драйвер был удален.

Мне не нравится, как XCode настроил это. По умолчанию он должен быть обратным, и боль в заднице его менять.

Настройка обратного проста. Просто откройте xcdatamodel в XCode, щелкните существующее отношение и установите обратный флажок.

4 голосов
/ 04 февраля 2010

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

Не думайте о базовых данных в терминах таблиц, которые будут сгенерированы.На самом деле Core Data достаточно умен, чтобы помещать данные в более чем одну таблицу.

Сосредоточьтесь на разработке модели данных, которая будет отвечать вашим потребностям (и добавьте обратные отношения).

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