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