2015-10-27 14 views
1

Я часто в конечном итоге получаю массивы объектов из бэкэнд и сохраняю их в царстве.Область: удалить устаревшие объекты

При получении списка с сервера бэкэнда, чтобы обновить область БД может случиться так, что некоторые объекты были изменены и некоторые из них были удалены с сервера:

  • Модифицированные объекты распознаются по их основным ключ и автоматически обновляется по области при использовании copyToRealmorUpdate().

  • Удаленные объекты вместо этого оставлены как-есть в области db, и у меня нет средств для понимания того, что в области есть теперь устаревшие данные.

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

Вторая вещь - проверить (используя свой первичный ключ), какие объекты, присутствующие в БД области, отсутствуют в списке обновлений сервера и удалять их по одному.

Я чувствую, что оба эти подхода являются субоптимальными, есть ли лучший способ справиться с этим?

Спасибо, Bye, Marco

ответ

3

Это звучит как ваш лучший вариант, чтобы добавить дополнительное логическое поле в классе модели. Назовем это staled. Установите его на true на бэкэнд, а copyToRealmOrUpdate() обновит клиентов. После загрузки нового набора объектов из бэкэнда вы можете realm.where(Foo.class).equalTo("staled", true).findAll().clear();, чтобы избавиться от занесенных объектов. Аналогично, вам придется удалить их на бэкэнд.

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