如何获取 Firestore 文档并在 UITableView 上显示它们

Posted

技术标签:

【中文标题】如何获取 Firestore 文档并在 UITableView 上显示它们【英文标题】:How to get Firestore documents and display them on a 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

【问题讨论】:

【参考方案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 上。 非常感谢您的帮助。

以上是关于如何获取 Firestore 文档并在 UITableView 上显示它们的主要内容,如果未能解决你的问题,请参考以下文章