我收到以下错误: “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()
}
}
我怎样才能做第一个例子,所以程序不需要翻阅所有单词?
答案 0 :(得分:3)
感谢您的澄清。由于collectedSentences
是一个Realm List对象,因此删除它会使原始查询的结果无效,这是造成异常的原因。
解决这个问题的一种方法(我以前在我自己的应用程序中使用过)是将查询结果的静态副本作为数组(遗憾的是,这是一个手动过程,你必须循环遍历结果对象,并将每个添加到数组中)。然后,您可以遍历该数组并删除其中的所有元素,而不会触发突变异常。