Ios Firestore进入TableView[Swift]
我已经看到了:但它仍然不起作用。这就是为什么我要为此创建一个新线程 我正在尝试将Firestore数据插入自定义tableview。但当我打印数字时,它返回(在控制台中): “MyDogwalk.listTxt” 并且没有数据显示在tableview上 我想所有这些都是相关的。(我还有两个类,包括init等) 和。。为什么会被否决?我得到了一个对这个案子有效的答案,这个问题非常详细,人们都能理解,不是吗Ios Firestore进入TableView[Swift],ios,swift,firebase,google-cloud-firestore,Ios,Swift,Firebase,Google Cloud Firestore,我已经看到了:但它仍然不起作用。这就是为什么我要为此创建一个新线程 我正在尝试将Firestore数据插入自定义tableview。但当我打印数字时,它返回(在控制台中): “MyDogwalk.listTxt” 并且没有数据显示在tableview上 我想所有这些都是相关的。(我还有两个类,包括init等) 和。。为什么会被否决?我得到了一个对这个案子有效的答案,这个问题非常详细,人们都能理解,不是吗 createArray()方法运行异步代码,并填充testText。但在异步代码运行之前,您
createArray()
方法运行异步代码,并填充testText
。但在异步代码运行之前,您将返回testxt
。因此,从createArray
方法返回并将其值设置为self.list
,只需在方法本身中执行即可:
self.list = tempTxt
self.tableView.reloadData()
您正在迭代
文档
,但始终使用文档的数据。首先
。试试这个:
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()
将self.tableView.reloadData()更改为
self.list = tempTxt
DispatchQueue.main.async {
self.tableView.reloadData()
}
并跳过从该函数返回的数组在主队列中重新加载您的
tableView
。@Dharmesh“主队列”在哪里,我是swift的新手,所以我有点不知所措:@Dharmesh非常感谢您的帮助,问题解决了。:)这非常好!!!谢谢只有一个问题,它显示的数据是这样的:它只检索了其中的一行,并且产生了大量的重复数据。我该如何解决这个问题?你知道吗?:)我认为问题在于如何填写testxt
。例如,您有一个不必要的循环。您介意编辑文本并显示一个更好的示例吗?:)哪个循环是不必要的?:)如果您使用文档,则无需对文档进行迭代。首先,始终使用。删除循环或访问每个文档
。我更新了帖子你是说底部的“返回列表”吗?是的,并更改了函数签名我现在在tableview中得到了结果,但只有一个问题,它显示的数据如下:imgur.com/a/4guOcEB它只检索了一行,并且产生了大量重复。我该如何解决这个问题?你知道吗?:)您应该迭代所有文档并获取数据,现在您只访问第一个文档(first()
)将QuerySnapshot!中文档的外部循环更改为!。文档
然后跳过内部循环,只需执行let data=document.data()
然后let data1=data[“Dog”]
等等操作
self.list = tempTxt
DispatchQueue.main.async {
self.tableView.reloadData()
}