Realm Swift如何将观察者添加到对象类型(无)

时间:2018-12-21 20:40:29

标签: ios swift realm

假设我必须流动:

1)我在数据库中有数据,然后我使用从数据库,集合和观察者获取带有参数的实体。之后,我从服务器加载数据,并且观察者块成功触发。很好。

2)我的数据库中没有数据。然后我尝试做同样的事情,它看起来像:

class Movie {
    constructor() {
        this.actor = new Actor();
    }
}

然后myObject为nil,因此未设置通知块。

以这种方式处理通知的方式是什么?我是说,也许可以通过某种方式将块设置为过滤器类型( 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() } ),因此,如果在领域中写入了适合它的对象,那么将触发观察块?

1 个答案:

答案 0 :(得分:0)

您可以观察域Results

,而不是观察仍未存储在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: ()
        }
    }

您可以观察结果对象而不是单个对象,并根据更改执行一些操作。