Подтвердить что ты не робот

CoreData - одномоментная модельная связь выходит как "один к одному"

Я новичок в моделировании Core Data, и мне трудно понять, как работают отношения "один ко многим".

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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