【问题标题】:Firebase remove observers with variable handles?Firebase 删除带有可变句柄的观察者?
【发布时间】:2018-07-30 17:35:27
【问题描述】:

目前,我正在为提要中的每个帖子添加一个观察者,例如:let postChangingDetailsObservation = Database.database().reference().child("postDetails").child(postID).child(UID!) 对于每个 postID,添加一个观察者。当视图消失时,有没有办法移除所有这些观察者,比如Database.database.reference.child("postDetails").removeAllObservers()?当视图消失时,我还能如何删除添加的每个观察者?

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    调用removeAllObservers 会从该特定引用中删除所有观察者。它确实从子节点中删除观察者。

    如果你想删除你附加的所有观察者,你要么必须跟踪所有观察者,或者至少要跟踪你附加观察者的所有节点。

    【讨论】:

    • 嗯,所以我保留一个句柄数组并将每个句柄添加到数组中?此外,由于有这么多的观察者(可能有 100 个等),是否值得在每次视图消失时都按照 firebase 文档的建议将它们全部删除?
    • 或者最好遍历帖子数组中的每个帖子并直接从他们的参考中删除所有观察者,即for post in PostList... reference.child("postDetails").child(postID).child(userID).removeAllObservers()
    • 您还需要参考/查询,所以不能只保留句柄。但是,如果您知道帖子 ID,那也可以。这里没有真正的最佳实践。
    • 那么移除所有视野中的观察者确实消失了会不会很紧张?
    • 另外,是否也需要删除 firestore 观察者?最后一个问题,如果不存在指定的路径,应用程序会崩溃吗?例如,如果我在不存在的路径上移除观察者,我会收到错误吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多