领域:删除陈旧的对象

Realm: delete stale objects

我经常最终从后端获取对象数组并将它们存储到领域中。

从后端服务器获取列表以更新领域数据库时,可能会发生某些对象已被修改而某些对象已从服务器中删除的情况:

我首先想到的是在更新之前从领域中删除该类型的所有对象。但这会导致糟糕的用户体验,因为对象本身通常是数据绑定到应用程序 UI 中的滚动视图(因此用户会看到滚动视图变空然后又变满)。

第二件事是检查(使用它们的主键)领域数据库中存在的哪些对象从服务器的更新列表中丢失,并将它们一一删除。

我觉得这两种方法都不是最优的,有没有更好的方法来处理这个问题?

谢谢, 再见, 马可

听起来你最好的选择是在你的模型中添加一个额外的布尔字段 class。我们称它为 staled。在后端将其设置为 truecopyToRealmOrUpdate() 将更新客户端。从后端下载一组新的对象后,您可以 realm.where(Foo.class).equalTo("staled", true).findAll().clear(); 删除陈旧的对象。同样,您必须在后端删除它们。