当我开始observer
在 Firebase 数据库节点上,我注意到 Firebase 继续调用该方法observer
即使没有数据变化。
这是我的设置:
FIRDatabase
.database()
.reference(withPath: "test")
.observe(FIRDataEventType.value, with: { (snapshot) in
print("Firebase Data Updated");
}
);
当我做one更改为 Firebase 数据库,observer
多次调用其闭包函数。
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
Firebase 数据已更新
...
为什么会出现这种情况?
我怎样才能阻止这种情况的发生并且只打一个电话observer
更新后?
该观察者很可能已被注册多次。当用户注销时,您注册的侦听器块将保持注册状态,这样当用户再次登录时,您将注册第二个侦听器。
捕获ref
and handle
观察者,并在使用完它们后删除句柄(即当用户注销时)。您可以这样做:
ref, handle = FIRDatabase
.database()
.reference(withPath: "test")
.observe(FIRDataEventType.value, with: { (snapshot) in
print("Firebase Data Updated");
}
);
并在退出时:
ref.removeObserverWithHandle(handle)
否则,确保仅调用一次的另一种可能的解决方案是使用.observeSingleEvent()
代替.observe()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)