【发布时间】:2019-02-25 13:02:29
【问题描述】:
我已经看到了:Swift UITableView reloadData in a closure,但它仍然不起作用。这就是为什么我要为此创建一个新线程。
我正在尝试将 Firestore 数据插入自定义表格视图。但是当我打印它返回的数字时(在控制台中):
“MyDogwalk.listTxt”
tableview 上没有显示任何数据。
我想所有这些都是相关的。 (我也有 2 个类,带有 init 等)
class HistoryViewController: UIViewController {
//Tableview
@IBOutlet weak var tableView: UITableView!
let db = Firestore.firestore()
var list: [listTxt] = []
override func viewDidLoad()
{
super.viewDidLoad()
list = createArray()
tableView.delegate = self
tableView.dataSource = self
}
func createArray() -> [listTxt]
{
var tempTxt: [listTxt] = []
//Authentication
let authentication = Auth.auth().currentUser?.uid
//Choosing collection
db.collection("rastad").document(authentication!).collection("promenad").getDocuments()
{ (QuerySnapshot, err) in
if err != nil
{
print("Error getting documents: \(String(describing: err))");
}
else
{
//For-loop
for _ in QuerySnapshot!.documents
{
self.list.removeAll()
let document = QuerySnapshot!.documents.first
let data = document!.data()
data.forEach { (item) in
let data1 = data["Dog"] as? String
let data2 = data["Person"] as? String
let data3 = data["What"] as? String
let data4 = data["Date"] as? String
let data5 = data["Time"] as? String
let txt = listTxt(dog: data1!, person: data2!, action: data3!, time: data4!, date: data5!)
print(txt)
tempTxt.append(txt)
}
}
self.tableView.reloadData()
}
}
//return tempTxt
return list
}
}
extension HistoryViewController: UITableViewDelegate, UITableViewDataSource
{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return list.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let listPath = list[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
cell.setCell(list: listPath)
return cell
}
}
而且.. 为什么这被否决了?我得到了一个实际上适用于这个案例的答案,而且这个问题足够详细,人们可以理解,不是吗?
【问题讨论】:
-
在主队列中重新加载您的
tableView。 -
@Dharmesh “主队列”在哪里,我是 swift 新手,所以我有点迷路了哈哈
-
@Dharmesh 非常感谢您的帮助,已解决。 :)
标签: ios swift firebase google-cloud-firestore