簡體   English   中英

Swift Realm-查詢空集,但數據在RealmBrowser中

[英]Swift Realm - Query Empty Set but Data is in RealmBrowser

我是iOS開發的新手。 我嘗試接收存儲在領域數據庫中的數據,但是有時我會得到一個空集,盡管我可以在RealmBrowser中看到這些數據。 通常它可以工作,但是不可靠。

首先,我清除存儲的數據以確保不顯示舊數據。 之后,我將其插入RealmDatabase,此外,我還查詢所有存儲的數據以將其顯示在tableView中。

這是我的代碼(Swift 3):

    let realm = try! Realm()
        try! realm.write {
            // clear all old data stored as fahrt.self
            //realm.delete(realm.objects(fahrt.self));
            realm.delete(realm.objects(fahrt.self));
            let nsArray = try! JSONSerialization.jsonObject(with: data as Data, options: []) as! NSArray;
            for eintrag in nsArray{
                realm.create(fahrt.self, value: eintrag, update: false)
            }
            try! realm.commitWrite();

        }

        DispatchQueue.main.async {
            let temp = ui as! DisplayViewController;
            let realm = try! Realm()
            let result = realm.objects(fahrt.self)
            ui.showData(res: result);
            // sometimes result is empty , don't know why
        }

RealmModel:

class fahrt: Object {
dynamic var id:  Int = 0
dynamic var date = ""
dynamic var from_lang: Double = 0.0
dynamic var from_lon: Double = 0.0
dynamic var to_lang: Double = 0.0
dynamic var to_lon: Double = 0.0

override static func primaryKey() -> String? {
   return "id"
}

}

首先,您不需要在realm.write { }塊中包含realm.commitWrite() realm.commitWrite()realm.beginWrite()結合使用,但是在realm.write { }內部會自動調用這兩個realm.write { } :)

其次,當您在后台線程上執行寫事務時,更改將在運行循環的下一次迭代時自動顯示在主線程上。 但是,在某些情況下,在后台寫入后立即在主線程上調用代碼時,這可能尚未發生。 為確保Realm在主線程上具有其數據的最新副本,應在執行查詢之前在該分派塊中調用realm.refresh()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM