не Core Data автоматически заботиться с обратными отношениями - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть 3 сущности, подобные этой:

sorry that this image has a problem that the

извините, что у этого изображения есть проблема, что отношение "день" сущности "Неделя" должно быть со многими, должно быть 2 стрелки в конце отношения

теперь вот 2 вопроса.

первый. Для любых объектов Day-Class (настраиваемый подкласс NSManagedObject), после того, как я позабочусь о его отношениях, например:

Week* aWeek;
Day *aDay;
[aWeek addDayObject:aDay];

тогда я действительно могу найти отношения Дня и Недели у сущности "день",

но, наоборот, я обнаружил, что отношение "thisWeek" объекта Day "aDay" по-прежнему равно нулю.

Я слышал, что после того, как вы создали свой подкласс NSMangedObject, у вас появились такие методы, как

- (void)addXXXObject:(xxx)xxx

, чтобы помочь вам справиться со многими отношениями и автоматически позаботится об обратных отношениях.

но здесь, похоже, нет. Так я должен разобраться с обратными отношениями сам,

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

второй. Предположим, есть много «Дней» с одной «Неделей», связанных их отношениями,

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

если это так, просто позвольте пользователю удалить этот день,

если нет, мы также удаляем объект «Неделя».

Так какое правило удаления из отношения ко многим следует использовать?

Мне не очень понятны эти правила ..

Спасибо!

1 Ответ

5 голосов
/ 01 февраля 2012

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

Я бы использовал обнулить правило удаления для отношения день-> неделя и каскад для неделя-> день.
При удалении недели все связанные с ней дни также удаляются.
Когда вы удаляете день, он будет удален из дней недели. Вы не можете автоматически удалить неделю, когда у нее больше нет дней. Однако вы можете наблюдать дни недели и удалять self , если self.days.count == 0.

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