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
是一个领域列表对象,删除它会使原始查询的结果无效,这就是导致异常的原因。
解决这个问题的一种方法(我以前在自己的应用程序中使用过)是将查询结果的静态副本制作为数组(遗憾的是,这是一个手动过程,您必须循环通过结果对象,并将每一个添加到数组中)。然后,您可以遍历该数组并删除其中的所有元素,而不会触发突变异常。
我收到以下错误: "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
是一个领域列表对象,删除它会使原始查询的结果无效,这就是导致异常的原因。
解决这个问题的一种方法(我以前在自己的应用程序中使用过)是将查询结果的静态副本制作为数组(遗憾的是,这是一个手动过程,您必须循环通过结果对象,并将每一个添加到数组中)。然后,您可以遍历该数组并删除其中的所有元素,而不会触发突变异常。