【问题标题】:How to get Firestore documents and display them on a UITableView如何获取 Firestore 文档并在 UITableView 上显示它们
【发布时间】:2020-04-02 01:59:22
【问题描述】:

Screenshot of Firestore Project 我想为集合中的每个文档显示“first_name”字段(在 UITableView 中。每次运行应用程序时 UITableView 都会显示为空白。

代码:

导入 UIKit 导入 Firebase

类 HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var filterButton: UIButton!

@IBOutlet weak var userTableView: UITableView!

var usersArray = [String]()
var db: Firestore!


override func viewDidLoad() {
    super.viewDidLoad()
    userTableView.delegate = self
    userTableView.dataSource = self
    // Do any additional setup after loading the view.
    db = Firestore.firestore()
    loadData()

}


func loadData() {
    db.collection("users").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {

                self.usersArray.append(document.documentID)
            }
        }
        print(self.usersArray)

        self.userTableView.reloadData()
    }
}


func numberOfSections(in tableView: UITableView) -> Int {

    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    print("Tableview setup \(usersArray.count)")
    return usersArray.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = userTableView.dequeueReusableCell(withIdentifier: "userCell", for: indexPath) as! UserCell
    let user = usersArray[indexPath.row]

    cell.fullNameLabel.text = user
    print("Array is populated \(usersArray)")

    return cell
}

}

【问题讨论】:

    标签: ios swift firebase google-cloud-firestore xcode11


    【解决方案1】:

    看起来您没有将单元格注册到 tableView。尝试使用:tableview.register(UserCell,forCellReuseIdentifier:"Your reuseIdentifier string")。尝试将其插入viewDidLoad

    【讨论】:

    • 我还可以建议两件事:当print(self.usersArray)`(self.userTableView.reloadData() 之前)或print("Tableview setup \(usersArray.count)") 打印时,它们输出正确的值吗?如果你对两者都说是,那么你的 UITableView 的实现必须被审查。另一个建议是将return cell 替换为return cell!。希望对您有所帮助。
    • 好吧,他们没有打印任何东西,所以这绝对是个问题。关于我可以尝试解决他们没有打印出正确值的问题的任何想法?
    • 哦,好吧,这是朝着好的方向迈出的一步。下一步是追查问题的根源。如果self.usersArray 没有填充数据,请问自己,为什么?看起来document.documentID 是一个假设填充self.usersArray 的字符串。您可以做的是在self.usersArray.append(document.documentID) 之前打印document.documentID 的值,如果打印的是字符串,那就太好了。如果没有,您应该检查您是如何从 Firebase 中提取数据并进行更正的。
    • 我已经成功打印了数据并且它是准确的。唯一的问题是它仍然没有显示在 UITableView 上。
    • 非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 2022-01-02
    • 2015-08-05
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多