CoreData - моделируемые отношения один-ко-многим выходят как один-к-одному - PullRequest
18 голосов
/ 26 ноября 2011

Я новичок в моделировании базовых данных, и мне трудно понять, как работают отношения один-ко-многим.

У меня есть родительская сущность с именем Task, которая может иметь несколько экземпляров сущности Comment.Я смоделировал это так: Comments - отношение к Task, называемое task, с сущностью Task и пунктом назначения.На Task отношение называется comments, с Comment в качестве пункта назначения, и оба отношения являются обратными.

Не задание обратного приводит ни к предупреждениям, ни к сообщениям об ошибках.Хотя моделирование работает таким образом, я заметил, что как только я создаю второй комментарий для данного Task, первый заменяется (отношение один к одному).

Как правильно сообщить базовой модели данных, что это отношение допускает много комментариев в одном Task?

Кроме того, поскольку CoreData, по-видимому, управляет первичными ключами самостоятельно, какя бы создал NSPredicate, чтобы получить все комментарии для данной задачи?

Спасибо за любые предложения!

1 Ответ

42 голосов
/ 27 ноября 2011

Прежде всего вам нужно установить параметр plural в сущности Task, выбрать его в .xdatamodeled и выбрать свойство relationship для сущности Task равным comments, которое вы сможете увидеть это enter image description here

есть опция plural, обязательно проверьте это. Вы должны воссоздать ваш NSManagedObject, если вы используете сгенерированные классы, а также если вы используете хранилище sqlite, вы должны удалить и перестроить его, чтобы он не жаловался, что новая схема не совпадает со старой.

Чтобы проверить, есть ли у вас отношение один ко многим, ваша сущность Task должна иметь свойство с именем comments, которое является типом класса NSSet, а не Comments.

Если вы хотите получить все комментарии для данной задачи, вам нужно повторить свойство NSSet(comments) этой задачи.

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