【发布时间】:2016-10-11 21:04:40
【问题描述】:
在这个tutorial 中,他们的 Firebase 代码分散在控制器中。由于您的 reload() 代码在现有的 .observe() 中,因此这使得在 Firebase 返回时重新加载 tableview 变得容易。
ref.queryOrdered(byChild: "completed").observe(.value, with: { snapshot in
var newItems: [GroceryItem] = []
for item in snapshot.children {
let groceryItem = GroceryItem(snapshot: item as! FIRDataSnapshot)
newItems.append(groceryItem)
}
self.items = newItems
self.tableView.reloadData()
})
如果 Firebase 代码在一个类中,如何处理上述问题?我仍然需要重新加载 tableview,但只有在 Firebase 返回之后。它看起来像这样:
f.performCompletedQuery()
self.tableView.reloadData()
f.performCompletedQuery() 将执行,但代码路径将继续,同时仍在从 Firebase 检索数据。然后self.tableView.reloadData() 将触发并且表将为空(因为 Firebase 尚未返回)。
我想我需要复制 Firebase 的观察,但在课堂上公开它并背负现有的观察?好像有点绕。有没有更好的办法?也许只是阻止、显示和动画?
【问题讨论】:
-
考虑在您的 performCompletedQuery() 中添加一个 completionBlock 吗?
标签: ios uitableview firebase firebase-realtime-database swift3