Firestore到TableView [Swift]

时间:2019-02-25 13:02:29

标签: ios swift firebase google-cloud-firestore

我已经看过:Swift UITableView reloadData in a closure,但是它仍然不起作用。这就是为什么我为此创建一个新线程。

我正在尝试将Firestore数据插入自定义表格视图中。但是,当我打印数字时,它会返回(在控制台中):

  

“ MyDogwalk.listTxt”

在表格视图中没有数据显示。

我想所有这些都是相关的。 (我也有2个类,带有init等)

lambda

然后..为什么要低票呢?我得到的答案实际上适用于这种情况,问题很详细,人们可以理解,不是吗?

2 个答案:

答案 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()
}

并跳过从该函数返回的数组