我的Realm數據庫中有一些對象。我需要從中刪除一個對象。 當我從我的Realm()
實例中刪除我的對象時,對象已被刪除。領域 - 數據庫在刪除後不是最新的
但是在執行刪除請求後,我需要從數據庫中檢索所有對象,但是這裏出乎意料,對象仍然在這裏。
我想我有一個線程問題,或類似的東西。 我不知道在哪裏調查。
我的簡化代碼:
我的刪除方法:
func myDeleteFunc(completion :()->Void){
let realm = try! Realm()
// ...
try! realm.write {
realm.delete(myObject)
}
completion()
}
// Here the object have been deleted from the realm instance, no problem
此方法是從的viewController其中I執行完成塊調用。 此完成塊包含檢索我的境界數據庫中的所有對象請求:
執行的方法和完成塊的的viewController:
myDeleteFunc(completion: {
DispatchQueue.main.async {
let realm = try! Realm()
let objects = Array(realm.objects(MyObject.self).sorted(byProperty: "aProperty"))
// Here objects still contains the object that I have already deleted
// ...
}
}
我想我的2種realm
情況不同,或線程之間有問題,因爲我有一個DispatchQueue.main.async
。
任何想法?
編輯:
我注意到,當我用的斷點檢查,有時它的工作原理。
因此,也許刪除請求尚未提交,並且我在刪除請求結束之前檢索對象?
它適用於autoreleasepool和realm.refresh(),謝謝,但爲什麼我要這樣做? – AnthonyR
從技術上講'refresh()'部分更多的是解決方法,如果它仍然不起作用,儘管這意味着你仍然有開放的Realm實例,你應該用'autoreleasepool'塊來包裝以確保關閉它們。 – EpicPandaForce
好吧,謝謝,我會檢查那些鬼! – AnthonyR