swift - 从 Firebase 检索时实际未设置变量

标签 swift uitableview firebase swift3 firebase-realtime-database

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

相关文章:

ios - 无法在 Swift 中获取 UITextField 的 .text 属性——错误 : "Instance member ' textFieldName' cannot be used on type 'ViewController'

ios - UITableView Swift 将静态部分与动态部分结合起来

ios - TableView 到 PDF 添加填充到页面

firebase - 在 Dart 中迭代 Map of Maps

swift - UIScrollView 中的嵌套 UIStackView 子级不会拉伸(stretch)以填充

json - 从 Swift 中的 HTTPCookie 读取 JSON 错误不起作用

ios - UISearchBar 在搜索结果中显示多个部分标题

android - 为什么 Firebase Phone Auth 需要很长时间才能在某些运营商上发送短信验证码?

javascript - WooCommerce Hook ( woocommerce_order_status_changed ) 无法运行 javascript

arrays - 通过数组删除变量