CoreData - одномоментная модельная связь выходит как "один к одному"
Я новичок в моделировании Core Data, и мне трудно понять, как работают отношения "один ко многим".
У меня есть родительский объект с именем Task
, который может иметь несколько экземпляров объекта Comment
. Я смоделировал это следующим образом: на Comments
отношение к Task
, называемое Task
, с объектом Task
назначением. В Task
отношение, называемое Comments
, с Comment
в качестве назначения, и оба отношения друг друга обратны.
Не определять обратные результаты в предупреждениях или сообщениях об ошибках. Моделирование таким образом работает, я заметил, что как только я создаю второй комментарий для данного Task
, первый заменяется (взаимно-однозначное отношение).
Каким будет правильный способ рассказать базовой модели данных, что эта взаимосвязь позволяет много комментариев в одном Task
?
Кроме того, поскольку CoreData, по-видимому, сам управляет первичными ключами, как мне создать NSPredicate
для извлечения всех комментариев для данной Задачи?
Спасибо за любые предложения!
Ответы
Ответ 1
Прежде всего вам нужно установить параметр plural
в сущности Task
, выбрать его в .xdatamodeled
и выбрать свойство relationship
объекта Task
для comments
, вы должны иметь возможность см. это ![enter image description here]()
есть опция plural
, обязательно проверьте это. Вы должны воссоздать свой NSManagedObject
, если вы используете сгенерированные классы, а также если вы используете хранилище sqlite, которое вы должны удалить и перестроить, чтобы он не жаловался на то, что новая схема не совпадает со старой.
Чтобы проверить, есть ли у вас отношение один к другому, ваш объект Task
должен иметь свойство, называемое комментариями, которое является типом класса NSSet
not Comments.
Если вы хотите получить все комментарии для заданной задачи, вам необходимо выполнить итерацию свойства NSSet(comments)
этой задачи.