我已经看过:Swift UITableView reloadData in a closure,但是它仍然不起作用。这就是为什么我为此创建一个新线程。
我正在尝试将Firestore数据插入自定义表格视图中。但是,当我打印数字时,它会返回(在控制台中):
“ MyDogwalk.listTxt”
在表格视图中没有数据显示。
我想所有这些都是相关的。 (我也有2个类,带有init等)
lambda
然后..为什么要低票呢?我得到的答案实际上适用于这种情况,问题很详细,人们可以理解,不是吗?
答案 0 :(得分:2)
createArray()
方法运行异步代码,并填充tempTxt
。但是您要在运行异步代码之前返回tempTxt
。因此,与其从createArray
方法中返回并将其值设置为self.list
,而只需在方法本身中进行操作即可:
self.list = tempTxt
self.tableView.reloadData()
您正在遍历documents
,但始终使用documents.first
的数据。试试这个:
self.list.removeAll()
for document in QuerySnapshot!.documents {
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
self.list.append(listTxt(dog: data1!, person: data2!, action: data3!, time: data4!, date: data5!))
}
}
self.tableView.reloadData()
答案 1 :(得分:1)
将self.tableView.reloadData()
更改为
self.list = tempTxt
DispatchQueue.main.async {
self.tableView.reloadData()
}
并跳过从该函数返回的数组