Android 是否可以部分更新RealmObject
我的应用程序从REST API获取it数据。Android 是否可以部分更新RealmObject,android,realm,Android,Realm,我的应用程序从REST API获取it数据。 根据端点,我将获得完整或部分帐户的列表 当API响应时,我调用realm.copyToRealmOrUpdate(accounts) 我的问题是,如果一个完整的帐户已经存储在域中,并且相同的部分帐户但是关系,关系,消息,消息在帐户列表中为空,完整的帐户被完全覆盖 我只想更新非null的字段。 有什么建议吗 我有没有办法重写Account.update()方法 @RealmClass public class Account extends Realm
根据端点,我将获得完整或部分
帐户的列表
当API响应时,我调用realm.copyToRealmOrUpdate(accounts)
我的问题是,如果一个完整的帐户
已经存储在域中,并且相同的部分帐户
但是关系
,关系
,消息
,消息
在帐户
列表中为空
,完整的帐户
被完全覆盖
我只想更新非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。对于其中的每个帐户:从域中获取具有此id的帐户(localAccount)。如果未找到(null):将serverAccount添加到数据库中。如果找到:手动更新localAccount上的四个字段,并将localAccount保存到DB
要优化上述内容,您可能需要使用ID列表(来自serverAccounts)执行单个领域查询,并将更改一批保存到领域。什么是
关系以及它存在的原因?关系
只是一个定义与另一个帐户关系的对象。我个人建议使用如果(x!=null)obj.setX(x)
方法,考虑到这是明确的。嗨,弗兰克。我已经考虑过了,但我希望有另一个解决方案。嗨,我不知道。如果你找到了,请告诉我。你可以使用createorupdatealfromjson()
。我们所有的json方法都只更新实际存在的字段。(JSON导入方法仅在您的JSON对象与领域模式的结构完全相同的情况下有效,包括字段名。)@ChristianMelchior问题是所有字段都存在,但null