- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我将 Firebase 数据库与 swift 结合使用。当我使用 databaseReference.observe(...)
进行观察时,我可以轻松地从 DatabaseReference 中删除观察者:
databaseHandle = databaseReference.observe(
.value,
with: { (snapshot) in ... },
withCancel: { (error) in ... })
...
databaseReference.removeObserver(withHandle: databaseHandle)
我的问题是当我使用 databaseReference.observeSingleEvent(...)
时。因为它不返回 FIRDatabaseHandle,所以我无法在需要时删除观察者。
我知道 databaseReference.observeSingleEvent(...)
会在观察者被触发后立即将其移除。但是,有时我需要在观察者被解雇之前将其移除。
我也知道我可以使用 databaseReference.removeAllObservers()
,但这对我来说不是一个方便的解决方案。
你们中有人知道我如何从 databaseReference 中过早地删除观察者(使用 observeSingleEvent(...)
创建)吗?
提前致谢
最佳答案
由于 databaseReference.observeSingleEvent(...)
不返回一个句柄,您可以删除唯一的选择是使用 databaseReference.observe(...)
.
当您需要或第一个事件触发时,只需手动移除 handle 。
尝试使用这个扩展:
public extension FIRDatabaseReference {
@discardableResult
public func observeOneEvent(of eventType: FIRDataEventType, with block: @escaping (FIRDataSnapshot) -> Swift.Void) -> FIRDatabaseHandle {
var handle: FIRDatabaseHandle!
handle = observe(eventType) { (snapshot: FIRDataSnapshot) in
self.removeObserver(withHandle: handle)
block(snapshot)
}
return handle
}
}
关于ios - 火力地堡 : How to removeObserver(withHandle:) after observeSingleEvent()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43226616/
与 Promise 一起使用 withHandlers 是否可能/安全?例如: withHandlers({ onChange: props => event => { props
我正在尝试使用 react-google-maps 包在我的应用程序中实现谷歌地图。在 map 中,我显示了多个 Marker 并使用了 MarkerCluster 。 到目前为止,我没有任何问题,并
我一直在研究react recompose库并试图理解这里的差异,结果是相同的,尝试阅读文档,但更加困惑,为什么有两种方法可以做同样的事情? const enhance = compose( wi
编辑:添加了一个全局变量,现在可以正常工作了。但我仍然有疑问.. 请继续阅读:) 我想在需要时在 Y 轴上执行加速度,并在我的代码的不同部分使用它。在这个例子中,我在一个 while 循环中使用它来进
我将 Firebase 数据库与 swift 结合使用。当我使用 databaseReference.observe(...) 进行观察时,我可以轻松地从 DatabaseReference 中删除观
Swift 3.0 与 Xcode 8.0 一起发布,显然发生了很多变化。我对 swift 的新语法非常陌生。有人可以帮我吗?我想弄清楚发生了什么 motionManager.startDeviceM
我查看的所有示例中,withHandlers 中实际调用的函数似乎是从 props 调用的函数,但我不知道该函数是如何定义的。这是 docs for humans 中的一个小例子. compose(
在 Swift 3 中使用 removeObserver(withHandle,不会在 viewDidDisappear 上删除观察者 var query = FIRDatabaseQuery() v
我的具体目标是使用 ScrollTo method一个 ScrollView 但保持功能组件结构。 更一般地说,这需要获取对当前组件的引用 isn't possible with naked reac
我是一名优秀的程序员,十分优秀!