【发布时间】:2017-07-27 21:11:50
【问题描述】:
我有一个UICollectionViewController,它充当从我的 Firebase 数据库中检索和显示数据的提要。它是窗口的根视图控制器,所以它始终存在。我的问题是,每次控制器出现时,其观察节点中的所有子节点都会添加到集合视图中。最初这很好,但是当我离开控制器并返回时,所有相同的数据都会被附加,从而创建重复项。这是一些伪代码,代表我与 Firebase 的交互:
class ViewController: UIViewController {
var children_query: DatabaseQuery!
override func viewDidLoad() {
super.viewDidLoad()
self.children_query = Database.database().reference().child("children").queryOrdered(byChild: "timestamp").queryStarting(atValue: Date().timeIntervalSince1970)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.observeAddedChildren()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.children_query.removeAllObservers()
}
func observeAddedChildren() {
self.children_query.observe(.childAdded, with: { snapshot in
print(snapshot.value)
})
}
}
在这个伪代码中,我没有处理 UI,而是简单地打印 snapshot,但重点仍然存在。每次控制器出现时,所有的孩子都会被打印出来。如何仅检索尚未检索到的数据?谢谢。
【问题讨论】:
标签: swift firebase firebase-realtime-database