2016-07-01 3 views
2

Я реорганизую свое приложение с большой библиотекой Realm, заменяя CoreData. Одной из проблем, с которой я столкнулся, является отсутствие каскадного удаления и отсутствие каких-либо хороших предложений о том, как сделать этот важный шаг по-другому.Лучшая практика Realm для достижения каскадного удаления

Моя модель может быть описана как

Person - idx, <RLMarray Dogs> 
Dog - idx, <RLMarray Walks> 
Walk - distance, time 

Что является лучшей практикой при удалении человека и всех его releted собак и dog.walks?

Итерации по всем? или существует ли какой-либо другой способ получения ссылки на дочерние объекты?

ответ

3

Теперь вам нужно будет перемещать все связанные объекты и связанные с ними объекты и т. Д. Самостоятельно, избегая циклов и удаляя только объекты над отношениями, при которых удаляются каскады.

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

Кроме того, это может быть полезно знать, что существует метод -\[RLMRealm deleteObjects:\] который позволяет удалять NSFastEnumeration -implementing коллекции, что включает в себя RLMArray и RLMResults.

Смежные вопросы