Расширенный DataModel в XCode с CoreData - PullRequest
2 голосов
/ 03 июня 2010

У меня есть вопрос относительно довольно продвинутой DataModel, которую я хотел бы использовать с CoreData.

Прежде чем я подробно расскажу о том, что я сделал, я опишу, что я хочу сделать.

У меня есть список гостей отеля, которые останавливаются в одной комнате и имеют предпочтения. Когда пользователь будет готов, он должен выбрать гостя и просмотреть данные, а также иметь возможность добавить нового гостя, выбрать комнату (поддерживается также приложением) и выбрать свои предпочтения (где пользователь также может добавлять новые предпочтения). Гость может не иметь или иметь много предпочтений.

Итак, вот что у меня есть. Я создал 3 сущности: - номера с номерами - Настройки с именем - GuestInfo с именем -> с этой комнатой отношений (комнаты назначения) и префами (предпочтения назначения с «связью со многими»)

Теперь я сделал все это и создал классы управляемых объектов. Все идет нормально. Проблема в том, что я получаю некоторые предупреждения.

  1. GuestInfo.room - отношения не имеют обратного
  2. GuestInfo.prefs - отношение ко многим не имеет обратного: это расширенный параметр (ни один объект не может находиться в нескольких местах назначения для определенного отношения)

Это просто предупреждение, которое я могу игнорировать? Я имею в виду, что для комнаты всегда есть только один номер комнаты для каждого гостя, но в одной комнате может быть больше гостей, поэтому здесь не может быть обратной зависимости. Также для предпочтений может не быть или больше предпочтений для каждого гостя.

Ответы [ 2 ]

4 голосов
/ 04 июня 2010

В предупреждениях Objective C следует НИКОГДА игнорировать. При работе с базовыми данными это вдвойне верно. Обрабатывайте каждое предупреждение как ошибку во время выполнения.

Что касается обратных отношений, вы должны ВСЕГДА иметь обратные. Если вы этого не сделаете, производительность снизится, а целостность данных подвергнется высокому риску.

1 голос
/ 03 июня 2010

Эти предупреждения можно игнорировать (см. Этот вопрос ), но легко добавить обратные отношения, чтобы осчастливить базовые данные. Добавьте связь с Room в GuestInfo, а другую - в Preference to GuestInfo, и убедитесь, что вы выбрали обратное. Я предполагаю, что это будет один к одному, так как у вас будет только одна информация о госте на комнату. Это может иметь побочный эффект: когда вы устанавливаете комнату для информации о госте, любая другая информация о госте в этой комнате будет удалена. Если это нежелательно, вы можете сделать отношения много-к-одному.

...