我经常最终从后端获取对象数组并将它们存储到领域。
从后端服务器获取列表以更新领域数据库时,可能会发生某些对象已被修改且某些对象已从服务器中删除的情况:
修改后的对象由主键识别,并在使用copyToRealmorUpdate()时由领域自动更新。
删除的对象在原型数据库中保持原样,我无法理解该领域现在存在陈旧数据。
我想到的第一件事是在更新之前从领域中删除该类型的所有对象。但这会导致用户体验不佳,因为对象本身通常是数据绑定到应用程序UI中的滚动视图(因此用户将看到滚动视图变为空,然后再次填满)。
第二件事是检查(使用他们的主键)从服务器的更新列表中删除了域DB中存在的哪些对象并逐个删除它们。
我觉得这两种方法都不是最理想的,有没有更好的方法来解决这个问题?
谢谢, 再见, 马可
答案 0 :(得分:3)
听起来你最好的选择是在你的模型类中添加一个额外的布尔字段。我们称之为staled
。在后端将其设置为true
,copyToRealmOrUpdate()
将更新客户端。从后端下载一组新对象后,您可以realm.where(Foo.class).equalTo("staled", true).findAll().clear();
删除已定位的对象。同样,您必须在后端删除它们。