我正在尝试获取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/