领域:迭代 RealmObject 并清除 ArrayList 字段
Realm: Iterating a RealmObject and clearing an ArrayList field
我有一个 RealmResults<Section>
,其中有一个 RealmList<Event>
字段,我想在每个部分上清除它。
我试过了(包括 mRealm.executeTransaction)
for (Section section : mSections) {
section.getEvents().clear();
}
和
Iterator<Section> sectionIterator = mSections.iterator();
while (sectionIterator.hasNext()) {
sectionIterator.next().getEvents().clear();
}
但是 Realm 抛出这个异常
java.util.ConcurrentModificationException: No outside
changes to a Realm is allowed while iterating a RealmResults. Use
iterators methods instead.
由于您实际上并没有删除正在迭代的元素,因此您可以只使用传统的 for 循环:
for (int i = 0; i < mSections.size(); i++) {
mSections.get(i).getEvents().clear();
}
请注意,如果您确实需要使用 Iterator
删除元素,则需要对 Iterator
本身使用 remove()
方法。
我有一个 RealmResults<Section>
,其中有一个 RealmList<Event>
字段,我想在每个部分上清除它。
我试过了(包括 mRealm.executeTransaction)
for (Section section : mSections) {
section.getEvents().clear();
}
和
Iterator<Section> sectionIterator = mSections.iterator();
while (sectionIterator.hasNext()) {
sectionIterator.next().getEvents().clear();
}
但是 Realm 抛出这个异常
java.util.ConcurrentModificationException: No outside changes to a Realm is allowed while iterating a RealmResults. Use iterators methods instead.
由于您实际上并没有删除正在迭代的元素,因此您可以只使用传统的 for 循环:
for (int i = 0; i < mSections.size(); i++) {
mSections.get(i).getEvents().clear();
}
请注意,如果您确实需要使用 Iterator
删除元素,则需要对 Iterator
本身使用 remove()
方法。