如何获取 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 上显示它们的主要内容,如果未能解决你的问题,请参考以下文章
将图像从 Firebase 存储链接到 Firestore 文档并在 React Native 中显示它们
如何在 FireStore 中获取 isAdmin 字段并在 Flutter 中检查它是真还是假