Какао - График объекта Core Data - PullRequest
0 голосов
/ 06 февраля 2012

Как мне справиться с удалением следующих объектов? Как должны выглядеть мои правила удаления?

Вот как выглядит мой граф объектов:

Boss

  • Босс-департамент имеет отношения многие ко многим
  • Если босс удален, Отделы, принадлежащие этому Боссу, должны быть НЕ удалены (но Отношения департаментов с этим боссом должны быть удалены)

Отдел

  • Сотрудник отдела имеет отношение многих ко многим
  • Департамент-Босс имеет отношение многих ко многим
  • Если отдел Сотрудники, принадлежащие этому отделу, должны быть удалены удалено ЕСЛИ они не связаны ни с каким другим отделом

Employee

  • Сотрудник-отдел имеет отношение многих ко многим
  • Сотрудники никогда не будут удалены напрямую (только через удаление отдела). О, счастливая жизнь!

1 Ответ

0 голосов
/ 07 февраля 2012

В этой ситуации правила удаления для ваших объектов должны обрабатываться следующим образом:

Boss-Department -> Nullify

Department-Employee -> Deny

Department-Boss-> Обнулить

Вот что Apple объясняет Правила удаления как

Запретить: если в месте назначения отношения есть хотя бы один объект, то исходный объект не может быть удален.Например, если вы хотите удалить отдел, вы должны убедиться, что все сотрудники этого отдела сначала переведены в другое место (или уволены!), Иначе отдел не может быть удален.

Nullify: установить обратное отношение для объектов в месте назначения в null.Например, если вы удаляете отдел, установите для всех текущих членов отдела значение NULL.Это имеет смысл, только если отношение отдела для сотрудника является необязательным, или если вы гарантируете, что вы установили новый отдел для каждого из сотрудников перед следующей операцией сохранения.

Каскад: удаление объектов в месте назначения взаимосвязи.Например, если вы удалите отдел, уволите всех сотрудников в этом отделе одновременно.

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

Для получения дополнительной информации ознакомьтесь с Руководство по программированию CoreData

...