我正在尝试获取 Firebase 数据库此部分中的子项数量,但是我设置的变量仅是本地设置的。有趣的是,第一个打印语句打印两个(这是我想要的数字),但是第二个打印语句打印零。我怎样才能让函数返回正确的值。谢谢您的帮助。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
var forReturn = 0
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("gameNumber").observeSingleEvent(of: .value, with: { snapshot in
forReturn = Int(snapshot.childrenCount)
print(forReturn)
})
print(forReturn)
return forReturn
}
这将打印重复的二和零。
最佳答案
您需要在类的范围内声明 forReturn 并在其他地方调用 firebase 方法。然后,当您到达 firebase 完成处理程序内部时重新加载表格。
//In your viewDidLoad or wherever you think suitable
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("gameNumber").observeSingleEvent(of: .value, with: { snapshot in
DisptachQueue.main.async {
forReturn = Int(snapshot.childrenCount)
self.tableView.reloadData() //take an outlet of tableView
print(forReturn)
}
})
关于swift - 从 Firebase 检索时实际未设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357296/