に最近追加された値を取得することはできません。は、私は私のアプリに2つのView Controllerを持ってFirebase
問題は、ユーザーが2番目のビューコントローラーにアイテムを追加し、最初のコントローラーに戻って本当に速くなってしまうことです。これにより、Firebaseデータベースがアイテムを保存しないことがあります。結果として、最初のView Controllerは新しく追加された項目を表示しません。
移植が行われる限り、私はviewWillAppear
に項目を取り出し、viewDidDisappear
のFirebaseリスナーオブザーバを削除します。これをどうすれば解決できますか?
// first view controller code
var items = [Item]()
var ref: FIRDatabaseReference!
func fetchItems() {
ref.child("items").observeSingleEvent(of: .value, with: { (snapshot) in
self.items = []
for child in snapshot.children.allObjects as! [FIRDataSnapshot] {
if let dictionary = child.value as? [String: AnyObject] {
// Create item and append it to an items array
}
}
self.tableView.reloadData()
})
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.fetchItems()
}
override func viewDidDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
ref.removeAllObservers()
}
View Controller 2のコードを表示できますか? – dstepan
Firebaseは非同期で動作するため、viewWillAppearでデータを呼び出すのではなく、viewController1のtableViewのデリゲートを使用してデータをリロードします。 –