簡體   English   中英

Realm Swift如何將觀察者添加到對象類型(無)

[英]Realm Swift how to add observer to object type (nil)

假設我有兩個流程:

1)我在數據庫中有數據,然后我使用從數據庫,集合和觀察者獲取帶有參數的實體。 之后,我從服務器加載數據,並且觀察者塊成功觸發。 沒關系。

2)我數據庫中沒有數據。 然后我嘗試做同樣的事情,它看起來像:

    myObject = MyRealmService()
        .fetchAll(MyRealmObject.self,
                  filter: "userID == \(someID)")?
        .first
    realmToken = myObject?.observe { [weak self] change in
        guard let _self = self else { return }

        switch change {
        case .deleted:
            _self.popCurrentViewController()
        case .error(let error):
            _self.show(error: error)
        case .change:
            _self.updateUI()
        }
    }

    loadDataFromServer() { object in
         object.saveToRealm()
    }

然后myObject為nil,因此未設置通知塊。

用這種方式處理通知的方式是什么? 我的意思是,也許可以通過某種方式將塊設置為過濾器類型( MyRealmObject.self, filter: "userID == \\(someID)" ),因此,如果在領域中寫入了適合它的對象,那么將觸發觀察塊?

您可以觀察Realm 結果 ,而不是觀察仍未存儲在Realm數據庫中的單個對象。

   let realm = try! Realm()

    var results = realm.objects(MyRealmObject.self).filter: "userID == \(someID)")

    var notificationToken = results.observe { change in
        switch change {
        case .update:
            DispatchQueue.main.async {
                block()
            }
        default: ()
        }
    }

您可以觀察結果對象而不是單個對象,並根據更改執行一些操作。

暫無
暫無

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

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