2017-09-05 54 views
2

我的应用程序从REST API获取数据。
根据端点,我会得到完整或部分的列表Account
当API响应我呼叫realm.copyToRealmOrUpdate(accounts)是否可以部分更新RealmObject

我的问题是,如果一个完整的account已经存储在境界和相同的部分account但如果relation_txrelation_rxmessage_last_rxmessage_last_txnullaccounts列表,完整account完全覆盖。

我只想要领域更新字段不是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; 
} 
+0

什么是“关系”,它为什么存在? – EpicPandaForce

+0

'关系'只是一个定义与另一个帐户的关系的对象 –

+0

个人而言,我建议手动使用'if(x!= null)obj.setX(x)'方法,因为这是明确的。 – EpicPandaForce

回答

1

我想你必须手动比较。请勿使用来自服务器的内容呼叫realm.copyToRealmOrUpdate(accounts)

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

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

+0

嗨,弗兰克。我已经想过了,但我希望有另一种解决方案。 –

+0

嗨。从来没听说过。让我知道如果你找到一个。 – Frank

+0

你可以使用'createOrUpdateAllFromJson()'。我们所有的json方法只更新实际存在的字段。 –

相关问题