【发布时间】:2017-04-27 22:47:57
【问题描述】:
当我在 Firebase 数据库节点上启动 observer 时,我注意到即使没有数据更改,Firebase 也会继续调用方法 observer。
这是我的设置:
FIRDatabase
.database()
.reference(withPath: "test")
.observe(FIRDataEventType.value, with: { (snapshot) in
print("Firebase Data Updated");
}
);
当我对 Firebase 数据库进行 一次 更改时,observer 会多次调用其闭包函数。
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
...
为什么会发生这种情况?
我怎样才能阻止这种情况的发生,并且在更新后只接到一个电话给observer?
【问题讨论】:
-
一旦注册了监听器块,即使用户注销,它也会保持注册状态。当视图消失时,你是否分离了你的监听器?
-
感谢您的回复。是的,但问题是当侦听器被多次触发时,只有一次数据更新。数据更新时监听器不应该只触发一次吗?
-
你的代码中哪里调用了这个函数?
-
在 appDidLaunchWithOptions 中调用
-
您问题中的代码本身很好,您的想法是正确的,只要测试节点的子节点发生变化,就会调用闭包。实际上没有足够的附加代码来绘制关于正在发生的事情的上下文 - 您可能已将另一个观察者附加到节点,或者可能更改测试节点的代码格式错误。如果您可以包含更多代码,我们可能会确定它。
标签: ios swift firebase firebase-realtime-database