我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?
Posted
技术标签:
【中文标题】我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?【英文标题】:Can I remove Firebase observer with handle, using just the root reference? 【发布时间】:2017-03-20 22:17:39 【问题描述】:我在一个自定义的“数据库”类中拥有所有观察者,该类具有一些观察引用并通过闭包传递结果的函数和协议。因此,我的某些视图控制器中不需要 Firebase 引用,只需要该类的一个实例。 所以我的问题是,删除带有句柄的观察者是否需要特定的参考?
或者我可以这样做吗
FIRDatabase.database().reference().removeObserver(withHandle: handle)
(可能有一些特定用户的路径),删除观察者?
【问题讨论】:
【参考方案1】:很遗憾,您需要在添加它的同一节点上将其删除。请记住,您可以在多个节点位置添加处理程序,甚至每个位置不止一次,所以这是有道理的。
请注意,您可以调用 removeAllObservers 来删除任何引用,而无需使用句柄,但同样,这只会影响特定路径,不会递归应用于子路径。
【讨论】:
那么这是否意味着如果我在多个地方观察相同的引用,它也会删除 all 观察者?还是参考+处理是一件独特的事情?这对我来说并不重要,我一次只想有一个观察者,我只是好奇:) 每次你注册一个观察者,你都会得到一个唯一的句柄。因此,您应该使用该位置的侦听器的正确句柄来调用每个位置。以上是关于我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?的主要内容,如果未能解决你的问题,请参考以下文章