假设我必须流动:
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()
}
),因此,如果在领域中写入了适合它的对象,那么将触发观察块?
答案 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: ()
}
}
您可以观察结果对象而不是单个对象,并根据更改执行一些操作。