2015-11-28 27 views
0

在更新Model類時拋出ConcurrentModificationException的領域。無法在遍歷結果的同時修改Realm對象

java.util.ConcurrentModificationException: No outside changes to a Realm is allowed while iterating a RealmResults. Use iterators methods instead. 

這是我的代碼 -

Realm realm = Realm.getDefaultInstance(); 
RealmQuery<Model> query = realm.where(Model.class); 
query.equalTo("decision", getString(android.R.string.yes)); 
ListIterator<Model> listIterator = query.findAll().listIterator(); 
realm.beginTransaction(); 
while (listIterator.hasNext()) { 
    Model model = listIterator.next(); 
    model.setDecision(getString(android.R.string.no)); 
} 
realm.commitTransaction(); 

回答

2

只需使用一個正常的循環

realm.beginTransaction(); 
int size = results.size(); 
for (int i = size-1; i >= 0; i--) { 
    results.get(i).setDecision(getString(android.R.string.no)); 
} 
realm.commitTransaction(); 
+0

但除了說'使用迭代方法instead.' – mjosh

+0

避免迭代器。 –

+0

仍然沒有工作,雖然我沒有得到錯誤只修改了一半的項目,另一半仍然是一樣的。 – mjosh