我的应用从 REST API 获取数据。
根据端点,我得到完整或部分 Account
的列表。
当 API 响应时,我调用 realm.copyToRealmOrUpdate(accounts)
。
我的问题是,如果一个完整的 account
已经存储在 Realm 和相同的部分 account
但 relation_tx
, relation_rx
, message_last_rx
, message_last_tx
都是null
在accounts
列表中,完整的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/