繁体   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