android - 是否可以部分更新 RealmObject

标签 android realm

我的应用从 REST API 获取数据。
根据端点,我得到完整或部分 Account 的列表。
当 API 响应时,我调用 realm.copyToRealmOrUpdate(accounts)

我的问题是,如果一个完整的 account 已经存储在 Realm 和相同的部分 accountrelation_tx, relation_rx , message_last_rx, message_last_tx都是nullaccounts列表中,完整的account 被完全覆盖。

我只希望 realm 更新不为 null 的字段。 有什么建议么?

有什么方法可以重写 Account.update() 方法?

@RealmClass
public class Account extends RealmObject {

    public String timestamp;

    @PrimaryKey
    public long id;

    public String name;

    public String email;

    public Relation relation_tx;

    public Relation relation_rx;

    public Message message_last_rx;

    public Message message_last_tx;
}

最佳答案

我认为您必须手动比较。不要使用来自服务器的内容调用 realm.copyToRealmOrUpdate(accounts)

相反,将您的服务器响应命名为 serverAccounts。对于其中的每个帐户:从 Realm 获取具有此 ID 的帐户 (localAccount)。如果未找到(null):将 serverAccount 添加到数据库。如果找到:在 localAccount 上手动更新您的四个字段并将 localAccount 保存到数据库。

为了优化上述内容,您可能希望使用一个 id 列表(来自 serverAccounts)执行单个 Realm 查询,并将您的更改也批量保存到 Realm。

关于android - 是否可以部分更新 RealmObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058601/

相关文章:

ios - 避免向 Realm 添加重复对象

ios - Realm Swift 返回所有 nil 值的对象

Swift:使用 Realm 过滤记录

java - 如何在android中打印受密码保护的PDF?

Android 将 map 中的多边形保存为所有设备大小相同的位图

android - 如何根据位置查询以根据位置显示编辑 View

ios - 在 Realm Swift 中过滤嵌套数组上的对象

java - Realm 配置对象类型 java

Android - 拆分可绘制对象

用于阅读和编辑 PDF 的 Android API