【发布时间】:2018-07-05 09:29:50
【问题描述】:
let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
if snapshot.value as? Bool ?? false {
print("Connected")
} else {
print("Not connected")
}
})
我正在使用它来检测我与 Firebase 的连接状态。我的问题是当他们是互联网连接时,结果是“未连接”,然后是“已连接”。当他们没有互联网连接时,它只会直接进入“未连接”。谁能解释一下?
【问题讨论】:
-
可以提供func
observe的签名吗?如果有一个change参数,那么它可能会被调用old然后new值 -
为什么不直接返回新值呢?旧值一开始就没用。
-
我不知道这个函数在你的示例中是如何工作的,但它看起来像 KVO,并且 KVO 允许你观察属性变化“from-to”、“from”、“to”等。在较新的 KVO API 中,观察块的参数中有一个对象,它封装了旧值、新值和更改类型,因此被调用一次。在 UIGestureRecognizer 中也使用此逻辑,当单处理程序被多次调用时,开发人员应处理识别器状态 - 即开始、更改、结束或失败。
标签: ios swift firebase firebase-realtime-database