停止自动更新 RLMResults

Stop auto-updating on RLMResults

我想用一个新记录替换领域中的所有现有对象:

 let realm = RLMRealm(path: ...)
 let newRecord = MyRealm() 
 //... fill record
 let existingJustNow = MyRealm.allObjectsInRealm(realm)        

 realm.beginWriteTransaction()
 realm.addObject(newRecord)  // first write new record
 realm.commitWriteTransaction()
 realm.beginWriteTransaction()
 realm.deleteObjects(existingJustNow) // now delete the older ones
 realm.commitWriteTransaction()

但这会删除所有对象(甚至是新对象)。

有没有办法停止 allObjects 方法的自动更新? 或者我必须将结果复制到数组中并删除它吗?

在这种情况下,您最好将 RLMObjects 复制到一个数组中,然后再删除它们。

let realm = RLMRealm(path: ...)
let newRecord = MyRealm() 
//... fill record
let existingJustNow = MyRealm.allObjectsInRealm(realm).valueForKey("self") as! [MyRealm]

realm.beginWriteTransaction()
realm.addObject(newRecord)  // first write new record
realm.deleteObjects(existingJustNow) // now delete the older ones
realm.commitWriteTransaction()

好消息是创建一个 RLMObjects 数组不必将它们的所有内容从数据库复制到内存中,它们仍然是延迟加载的访问器,所以它非常轻量级。