我的应用程序从REST API获取数据。
根据端点的不同,我获得了完整或部分Account
的列表。
当API响应时,我称为realm.copyToRealmOrUpdate(accounts)
。
我的问题是,如果已将完整的account
存储在领域和相同的部分account
中,但是其中relation_tx
,relation_rx
,message_last_rx
,message_last_tx
是null
是accounts
列表中,完整的account
完全是Overriden。
我只希望领域更新不是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)
与服务器的内容调用。
而是命名您的服务器响应服务器计算。对于其中的每个帐户:从Realm中获取此ID的帐户(LocalAccount)。如果找不到(null):将服务器计算添加到数据库中。如果发现:在Localaccount上手动更新您的四个字段,然后将Locarcount保存到DB。
。要优化上述内容,您可能需要使用ID列表(来自ServerAccounts)进行单个领域查询,并将更改保存在一批中。