【发布时间】:2016-11-09 05:55:41
【问题描述】:
我在 View Controller A 上的 viewWillAppear 上观察到了一个查询
let query = FIRDatabase.database().reference().child("tags").
queryOrdered(byChild: "users/uid").queryEqual(toValue: userId)
在同一个视图控制器中,在viewDidDisappear 中,我删除了这个观察者。
假设我从视图控制器 A 推入另一个视图控制器。
当我回到视图控制器 A 时,观察者会返回一个快照,即使我在后端的数据没有改变。
我只希望在我的数据库发生实际更改时返回快照。我该如何解决这个问题?谢谢。
【问题讨论】:
-
所以您是说在控制器A 中执行您问题中的代码。然后当用户从控制器 A 移动到控制器 B 时,观察者被移除。那么当回到controllerA时,上面的代码会再次执行吗?每当您附加观察者时,都会返回一个快照,因为“新”观察者不知道数据 - 它被删除,然后添加了一个“新”观察者,因此数据是新的。可能没有理由将其删除。如果从 A 移动到 B 时数组保持活动状态,只需让观察者更新它,这样当您回到 A 时,数据就是最新的。
-
是的,您正确理解了我的情况。但这是我看到的问题: 1. 我进行不必要的网络调用只是为了“了解”我的快照是否已更改,我认为这很昂贵? 2. 我的显示这个快照的tableview现在每次都被重新加载,这并不理想。对这两点有什么想法吗?感谢您的回复。编辑:我在 viewDidDisappear 中删除观察者的原因是因为这篇文章告诉我这样做:firebase.googleblog.com/2015/10/…
标签: firebase firebase-realtime-database