[英]Update nested lists with realm
我在Android應用程序中使用領域和改造。 我正在嘗試更新從服務器獲取的JSON。 JSON包含列表中的列表。 而且領域不會將新數據添加到領域數據庫中。
第一次使用realm.copyToRealmOrUpdate
將添加正確的數據。 但是,如果我在JSON包含新的triggeringZones
時第二次嘗試相同的操作,則不會添加這些區域。 我需要重新安裝該應用程序才能添加區域。
任何人都有關於如何將copyToRealmOrUpdate
與列表中的列表一起使用的線索,或者還有其他選擇嗎?
示例類:
public class Zones {
public List<Zone>
}
public class Deals {
public List<AffectingZones>
}
public class AffectingZones {
}
JSON范例
{
"transactionId": "string",
"status": "SUCCESS",
"statusDescription": "string",
"triggeringZones": [
{
"id": 0,
"name": "string",
"description": "string",
"longitude": 0,
"latitude": 0,
"radius": 0,
"deals": [
{
"id": 0,
"description": "string",
"principle": "ALL",
"affectingZones": [
{
"id": 0,
"name": "string",
"description": "string",
"longitude": 0,
"latitude": 0,
"radius": 0
}
],
"triggeringZone": {
"id": 0,
"name": "string",
"description": "string",
"longitude": 0,
"latitude": 0,
"radius": 0
}
}
]
}
]
}
copyToRealmOrUpdate
公共java.util.List copyToRealmOrUpdate(java.lang.Iterable對象)
更新由其PrimaryKey
標識的現有RealmObjects
的列表,如果找不到現有對象,則創建一個新副本。
確保在主表中包含PrimaryKey
,以使copyToRealmOrUpdate
正常工作。
從Realm v1.1.0開始,他們提出了一些優化措施,現在提供了4種新方法,或者您可以使用它
這些方法與標准Realm.copyToRealm()
主要不同之處在於它們不返回任何對象。 這使我們可以將內存分配減少到幾乎為零,並刪除許多純開銷的檢查。
這樣做,我們從比優化的SQLite實現慢約40%到對10萬個對象快約70%。
請注意,由於Realm的自動更新功能,可以在保存之前查詢數據,並且在數據可用時會通知您。 對於那些希望將顯示數據與保存數據分開的人來說,這可能是一個巨大的好處:
final PersonApi api = new PersonApi();
Realm realm = Realm.getDefaultInstance();
RealmResults<Person> persons = realm.where(Person.class).findAllAsync();
person.addChangeListner(new RealmChangeListener() {
@Override
public void onChange(RealmResults<Person> persons) {
if (!persons.isEmpty()) {
// Callback when data is available
}
}
});
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.insertOrUpdate(api.getPersons());
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.