Удаление нескольких объектов из локальной базы данных областей на iOS - PullRequest
0 голосов
/ 10 апреля 2020

Я заканчиваю приложение, использующее локальную базу данных Realm с тремя моделями. Когда я удаляю объект из основной мастер-модели, предполагается, что все связанные объекты в дочерних моделях удаляются, но удаляется только один из объектов в каждой модели. См. Диаграмму атташе.

Не уверен, где go дальше. Любая помощь будет принята с благодарностью!

Спасибо!

Благословения, —Марк

схема проблемы

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

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

//get the object at indexPath.row
           let a = self.master![indexPath.row]
           let id = a.Id //master's record ID
           let n = realm.objects(Child1.self).filter("Id = %@", id)
           let r = realm.objects(Child2.self).filter("Id = %@", id)

           //Delete object at indexPath.row
           try! realm.write {
               realm.delete(n)
               realm.delete(r)
               //delete last
               realm.delete(a)
           }

Благословения, —Марк

0 голосов
/ 11 апреля 2020

Это нормальное поведение области js. Когда вы удаляете один элемент основной модели, связанный с ним дочерний элемент все еще присутствует в базе данных.

Единственное решение - получить все дочерние элементы и сначала удалить их.
Например, если у вас есть Основная модель с именем "Order" и дочерняя модель с именем "customer":

/** if you use realm-js **/

const order = realm.objects('Order').filtered(`id = 1`)[0]
realm.write(() => {
  realm.delete(order.customer)
  realm.delete(order)
})

. Также вы можете найти похожие посты с таким же вопросом здесь или здесь

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