gpt4 book ai didi

swift - 循环遍历 Firebase 数据库以在 Swift 中构建表列表

转载 作者:行者123 更新时间:2023-11-30 10:58:11 26 4
gpt4 key购买 nike

我有一个表格 View 。它里面有一个表格单元格。我希望我的客户出现在列表中。客户列表来自 Firebase 数据库。

因此,我设置了 TableView 并定义了一个空的客户端数组

class ClientViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var clients = Array<Any>()

@IBOutlet weak var tableView: UITableView!

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "clientsCell", for: indexPath as IndexPath)
cell.textLabel?.text = clients[indexPath.row] as? String
return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return clients.count
}

加载 View 后,(我很确定这是问题所在)我遍历数据库引用并将公司名称附加到空客户数组中

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var ref: DatabaseReference!

ref = Database.database().reference()

ref.child("clients").observeSingleEvent(of: .value, with: { (snapshot) in

for client in snapshot.children.allObjects as! [DataSnapshot] {
let company = client.childSnapshot(forPath: "company").value
self.clients.append(company ?? "No company name")
}

}) { (error) in
print(error.localizedDescription)
}
}

如果我对客户端数组进行硬编码,效果会很好。有了这个,我认为迭代发生在生成表之后。我怎样才能让它像我需要的那样工作?

最佳答案

for循环后重新加载表格

for client in snapshot.children.allObjects as! [DataSnapshot] {
let company = client.childSnapshot(forPath: "company").value
self.clients.append(company ?? "No company name")
}
self.tableView.reloadData()
<小时/>

如果您最终将转换为 String,也请避免 Any 类型

var clients = [String]()

关于swift - 循环遍历 Firebase 数据库以在 Swift 中构建表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com