停止自动更新 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 数组不必将它们的所有内容从数据库复制到内存中,它们仍然是延迟加载的访问器,所以它非常轻量级。
我想用一个新记录替换领域中的所有现有对象:
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 数组不必将它们的所有内容从数据库复制到内存中,它们仍然是延迟加载的访问器,所以它非常轻量级。