RealmSwift error: "RLMException, reason: Collection was mutated while being enumerated."

RealmSwift error: "RLMException, reason: Collection was mutated while being enumerated."

我收到以下错误: "RLMException, reason: Collection was mutated while being enumerated."

当我尝试这样做时出现错误:

let realm = Realm()

let words = realm.objects(Word).filter("ANY collectedSentences.characterCount > 0")

realm.write {
    for word in words {
        word.collectedSentences.removeAll()
    }
}

我没有收到那个错误如果我这样做:

let realm = Realm()
let words = realm.objects(Word)

realm.write {
    for word in words {
        word.collectedSentences.removeAll()
    }
}

我怎样才能像第一个例子那样让程序不必遍历所有单词?

感谢您的澄清。由于 collectedSentences 是一个领域列表对象,删除它会使原始查询的结果无效,这就是导致异常的原因。

解决这个问题的一种方法(我以前在自己的应用程序中使用过)是将查询结果的静态副本制作为数组(遗憾的是,这是一个手动过程,您必须循环通过结果对象,并将每一个添加到数组中)。然后,您可以遍历该数组并删除其中的所有元素,而不会触发突变异常。