等待firebase交还数据xcode

时间:2019-11-07 14:26:41

标签: ios swift firebase asynchronous

我非常怀疑这个问题还没有得到答案,但是我无法通过stackoverflow上的外部帖子来解决。

我正在使用xcode swift中的observeSingleEvent方法提取数据。

问题是,即使我想等待firebase返回数据,firebase还是异步运行,并且代码可以通过。

var requests_list:NSMutableDictionary = [:]

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let ref = Database.database().reference()
    let userID: String = (Auth.auth().currentUser?.uid)!
    ref.child("users").child(userID).child("requests").observeSingleEvent(of: .value, with: {(snapshot) in
        let requests = snapshot.value as! NSDictionary
        for (key,_) in requests{
            ref.child("users").child(key as! String).observeSingleEvent(of: .value, with: {(snapshot) in
                let value1 = snapshot.value as! NSDictionary
                let username = value1["username"]!
                let keyvalue = key as! String
                self.requests_list[keyvalue] = username
                print(self.requests_list)
            })
        }
    })
}

这是我的tableView,用于计算必须有多少行。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "cell")
    cell.textLabel?.text = self.requests_list.allValues[indexPath.row] as? String
    print(self.requests_list.allValues[0] as! String)
    return cell
}

这是填充单元格的地方。问题在于程序认为列表是空的,所以他们不填写行。

0 个答案:

没有答案