[英]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.