Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firestore进入TableView[Swift]_Ios_Swift_Firebase_Google Cloud Firestore - Fatal编程技术网

Ios Firestore进入TableView[Swift]

Ios Firestore进入TableView[Swift],ios,swift,firebase,google-cloud-firestore,Ios,Swift,Firebase,Google Cloud Firestore,我已经看到了:但它仍然不起作用。这就是为什么我要为此创建一个新线程 我正在尝试将Firestore数据插入自定义tableview。但当我打印数字时,它返回(在控制台中): “MyDogwalk.listTxt” 并且没有数据显示在tableview上 我想所有这些都是相关的。(我还有两个类,包括init等) 和。。为什么会被否决?我得到了一个对这个案子有效的答案,这个问题非常详细,人们都能理解,不是吗 createArray()方法运行异步代码,并填充testText。但在异步代码运行之前,您

我已经看到了:但它仍然不起作用。这就是为什么我要为此创建一个新线程

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

“MyDogwalk.listTxt”

并且没有数据显示在tableview上

我想所有这些都是相关的。(我还有两个类,包括init等)

和。。为什么会被否决?我得到了一个对这个案子有效的答案,这个问题非常详细,人们都能理解,不是吗

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