【发布时间】:2019-05-23 22:47:55
【问题描述】:
我正在尝试通过调用以下命令来设置 Firebase 观察者:
ref.child(id).child("isLocked").observe(.value, with: { snapshot in
print("isLocked = ", snapshot.value!)
})
当视图加载时,它可以完美运行。它打印出正确的值。
当我在 Firebase 本身或单独的设备上更改值时,isLocked 将不再打印。应该是什么时候,因为我在路上有一个观察者。什么给了?
这里的最终目标是根据 lock 值是 true 还是 false 来提供 UIButton。
视图加载了button.isHidden = true。
更新
我发现观察者问题的根源不是“工作”
似乎存在时间问题。
在之前的视图控制器(进入新的视图控制器)中,我在“viewDidDisappear”函数中调用ref.child(pID).child("isLocked").removeAllObservers()
在新的视图控制器中,我正在“尝试”设置相同的路径观察者 'ref.child(id).child("isLocked").observe(.value, with: { snapshot in'
我猜removeAllObservers() 胜过新观察者的设置!?我该如何克服这个!?
【问题讨论】:
-
您能否包含显示您如何更改其他设备上的数据库的最少代码?
-
@FrankvanPuffelen 我将直接进入 Firebase 并将锁定值从 true 更改为 false,反之亦然,没有任何反应。
-
@FrankvanPuffelen 我还添加了更多细节,以通过
lock值切换为 true 或 false 来实现 -
这很不常见。您确定要更改正确 ID 下的
isLocked吗?另请注意,既然您说“或在单独的设备上”,我假设您也可以更改代码,这样更容易看到发生了什么。 -
@FrankvanPuffelen 是的...如果我将观察者放在“.childChanged”上,它确实有效!?但同样它只是在改变......我不知道为什么它不会接受 .value!?
标签: swift firebase firebase-realtime-database observers