领域:删除过时的对象

Posted

技术标签:

【中文标题】领域:删除过时的对象【英文标题】:Realm: delete stale objects 【发布时间】:2015-10-27 08:44:52 【问题描述】:

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

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

使用copyToRealmorUpdate()时,修改后的对象由主键识别并由领域自动更新。

被移除的对象被保留在领域数据库中,我无法理解领域中现在有陈旧的数据。

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

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

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

谢谢, 再见, 马可

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于领域:删除过时的对象的主要内容,如果未能解决你的问题,请参考以下文章

领域链接对象和删除

如何轻松删除领域中的所有对象

删除领域数据库对象,但即使所有对象都为空,领域文件大小也保持不变。并且在时间上变得太大了

领域对象已被删除或失效

六 领域驱动设计-领域对象的生命周期

领域中每个对象的领域对象通知