2017-09-05 104 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方法只更新實際存在的字段。 –

相關問題