【问题标题】:Realm: Iterating a RealmObject and clearing an ArrayList fieldRealm:迭代 RealmObject 并清除 ArrayList 字段
【发布时间】:2015-04-27 21:22:40
【问题描述】:

我有一个 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: 没有外部 迭代 RealmResults 时允许对 Realm 进行更改。采用 迭代器方法。

【问题讨论】:

  • getEvents() 返回了什么?另一个ArrayList
  • Events 对象是一个RealmList&lt;Event&gt;,它几乎是一个 ArrayList
  • 您是否尝试过仅使用传统的 for 循环?这可能会起作用,因为您实际上并没有删除您正在迭代的项目。
  • 我不敢相信我以前没有尝试过!成功了,谢谢!

标签: java android iterator realm


【解决方案1】:

由于您实际上并没有删除正在迭代的元素,因此您可以只使用传统的 for 循环:

for (int i = 0; i < mSections.size(); i++) {
    mSections.get(i).getEvents().clear();
}

请注意,如果您确实需要使用Iterator 删除元素,则需要对Iterator 本身使用remove() 方法。

See Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多