如果未显示View Controller,则不会调用Firestore addSnapshotListener(导航控制器的后台堆栈)

时间:2018-02-15 21:01:41

标签: ios swift firebase google-cloud-firestore

我想了解即使未显示View Controller,如何使addSnapshotListener接收更新。

让我们说我在ViewController A上调用addSnapshotListener然后过了一段时间后我去了View Controller B.

在ViewController B中,我将一些数据添加到ViewController A正在侦听的addSnapshotListener的集合中。但是,从ViewController B返回ViewController A后,似乎没有查询新元素。

我考虑过调用ViewController A的addSnapshotListenerviewDidAppear,以便更新它但不会要求我之前删除所有的侦听器吗?难道没有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

只要在视图控制器A消失时不移除侦听器,就应该在对堆栈顶部推送的viewController进行更改时调用侦听器。我已经开始工作了。在侦听器代码中,请务必检查它是否不是来自缓存,因为有时它会多次调用。您还可以使用此代码检查文档更改。

snapshot.documentChanges.forEach { diff in
        if (diff.type == .added) {
            print("New city: \(diff.document.data())")
        }
        if (diff.type == .modified) {
            print("Modified city: \(diff.document.data())")
        }
        if (diff.type == .removed) {
            print("Removed city: \(diff.document.data())")
        }
    }