java – Realm:迭代RealmObject并清除ArrayList字段

我有一个RealmResults< Section>有一个RealmList<事件>我要在每个部分清除的字段.

我试过了(insude 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()方法.

See Documentation

上一篇:如果在没有关闭开放领域实例的情况下关闭我的Android应用程序会发生什么?


下一篇:Realm Android javassist.NotFoundException:io.realm.com_example_realmtest_data_SomethingRealmProxyInt