Основные данные - проблема удаления правила - PullRequest
1 голос
/ 28 апреля 2011

У меня странная проблема с правилами удаления в coredata. Моя модель данных не так сложна. Я подробно описываю здесь только отношения между элементами:

A
----------
has_many B (optional, delete rule : Cascade)
has_many C (optional, delete rule : Cascade)

B
----------
has C (optional, delete rule : Cascade)
inv_A (delete rule : Nullify)

C
----------
has B (optional, delete rule : Nullify)
inv_A (delete rule : Nullify)

Когда я удаляю B, связанный C не удаляется. Это как правило каскадного удаления не работает ...

У вас есть подсказка о том, что я делаю неправильно?

Спасибо за вашу помощь

EDIT

Это была просто проблема с повторной проверкой. Тупой вопрос ... Никогда не забудь А) Восстановить данные в базе после сохранения Б) Перезагрузить таблицу с этим новым результатом выборки (или использовать NSFetechedResultController)

1 Ответ

1 голос
/ 28 апреля 2011

Правило удаления всегда применяется к удалению другого объекта. Поэтому, когда вы удаляете объект C, отношение has C также будет гарантировать удаление B. Однако, наоборот, отношение has B установлено только для аннулирования, поэтому оно и делает.

Чтобы прояснить ситуацию, подумайте об этом следующим образом: если у вас было только одно отношение, скажем, B ссылается на C, то есть B имеет поле для объекта типа C. Единственное разумное, что означает правило удаления, - это решение вопрос о том, что делать с указанным полем, если объект указывает на , должен быть удален.

...