Я немного не понимаю, как работают правила удаления отношений в Core Data, по крайней мере, за пределами простых случаев, описанных в документации.
Большинство из этих случаев и большинство ответов, которые я видел для вопросов здесь, используют модель, где объект на левой стороне отношения "один ко многим" "владеет" объектами с правой стороны: например. a Person
имеет PhoneNumber
s, и если вы удаляете человека, вы удаляете все связанные с ним номера. В этом случае решение понятно: Core Data будет обрабатывать все для вас, если вы установите такие отношения следующим образом:
Person --(cascade)-->> PhoneNumber
PhoneNumber --(nullify)--> Person
Меня интересует противоположность: отношения "ко многим", в которых "собственность" отменяется. Например, я мог бы расширить пример кода CoreDataBooks, чтобы добавить объект Author
для сбора всей информации об уникальном авторе в одном месте. A Book
имеет одного автора, но у автора много книг... но нас не интересуют авторы, для которых мы не перечисляем книги. Таким образом, удаление Author
, отношение books
не должно быть пустым, не должно быть разрешено, а удаление последнего Book
, ссылающегося на конкретный Author
, должно удалить это Author
.
Я могу представить пару способов сделать это вручную... что я не уверен в следующем:
- У Core Data есть способ сделать хотя бы часть этого автоматически, как с правилами удаления отношений?
- есть ли "канонический", предпочтительный способ справиться с такой ситуацией?