我收到以下错误: “RLMException,原因:集合在枚举时发生了变异。”
当我尝试这样做时出现错误:
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
是一个 Realm List 对象,删除它会使原始查询的结果无效,这就是导致异常的原因。
解决这个问题的一种方法(我以前在自己的应用程序中使用过)是将查询结果的静态副本制作为数组(遗憾的是,这是一个手动过程,您必须循环遍历结果对象,并将每一个添加到数组中)。然后,您可以遍历该数组并删除其中的所有元素,而不会触发突变异常。
关于swift - RealmSwift 错误 : "RLMException, reason: Collection was mutated while being enumerated.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407636/