我想从Firebase阅读并显示用户信息。 这是我的距离:
class UserInfoViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
var ref: DatabaseReference!
private var gotName = [""]
@IBOutlet weak var tableView: UITableView!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return gotName.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "UserInfoCell") as! UserInfoTableViewCell
cell.nameLabel.text = gotName[indexPath.row]
return cell
}
override func viewDidLoad() {
ref = Database.database().reference()
let user = Auth.auth().currentUser!.uid
ref?.child("users").child(user).observeSingleEvent(of: .value, with: { (snapshot) in
guard let userDict = snapshot.value as? [String: Any],
let name = userDict["Name"] as? String else {
return
}
//Declare variables for use
self.gotName = [name]
})
}
}
Firebase结构:
-users
-----5DzurQyzyIbXfFCbAxc4ynwizYJ2
---------John Doe
我希望当前用户显示在nameLabel
中答案 0 :(得分:1)
您已经正确编写了代码。
但是从firebase下载数据后,您必须重新加载表格视图。
只需在Firebase观察器的self.gotName = [name]
之后编写以下代码。
DispatchQueue.main.async {
self.tableView.reloadData()
}
希望这会有所帮助