领域:删除过时的对象
Posted
技术标签:
【中文标题】领域:删除过时的对象【英文标题】:Realm: delete stale objects 【发布时间】:2015-10-27 08:44:52 【问题描述】:我经常最终从后端获取对象数组并将它们存储到领域中。
当从后端服务器获取列表以更新领域数据库时,可能会发生一些对象已被修改,而一些对象已从服务器中删除:
使用copyToRealmorUpdate()时,修改后的对象由主键识别并由领域自动更新。
被移除的对象被保留在领域数据库中,我无法理解领域中现在有陈旧的数据。
我想到的第一件事是在更新之前从领域中删除所有该类型的对象。但这会导致用户体验不佳,因为对象本身通常是绑定到应用 UI 中滚动视图的数据(因此用户会看到滚动视图变空,然后又变满)。
第二件事是检查(使用它们的主键)领域数据库中存在的哪些对象从服务器的更新列表中丢失,并一个一个地删除它们。
我觉得这两种方法都不是最理想的,有没有更好的方法来处理这个问题?
谢谢, 再见, 马可
【问题讨论】:
【参考方案1】:听起来您最好的选择是在模型类中添加一个额外的布尔字段。我们称之为staled
。在后端将其设置为true
,copyToRealmOrUpdate()
将更新客户端。从后端下载一组新对象后,您可以realm.where(Foo.class).equalTo("staled", true).findAll().clear();
删除陈旧的对象。同样,您必须在后端删除它们。
【讨论】:
以上是关于领域:删除过时的对象的主要内容,如果未能解决你的问题,请参考以下文章