RealmでRLMResultsをfor inで更新するときに一つ飛ばしになってしまう問題について
if let posts = Post.objectsWithPredicate(NSPredicate(format: "active == FALSE")) as RLMResults? {
realm.beginWriteTransaction()
for postObj in posts {
if let post = postObj as? Post {
post.active = true
}
}
realm.commitWriteTransaction()
}
例えばこのような更新処理があったとした場合に、更新が1つ飛ばしずつしかできなくなります。
理由としては、RLMResultsが常に最新状態になるため、post.active=trueするたびにpostsからオブジェクトがなくなっていくことが原因だと思われます。
このような場合にはどのような書き方をすることで、適切に全てのレコードを更新できるのでしょうか?