Ios 未能从云Firestore查询快照压缩映射文档数组

Ios 未能从云Firestore查询快照压缩映射文档数组,ios,swift,google-cloud-firestore,swiftui,Ios,Swift,Google Cloud Firestore,Swiftui,我为一个集合分配了一个侦听器,以接收该文档的更新筛选列表,但它无法将该文档压缩到原始类型的数组 下面是代码的详细说明: 如果let user=FirebaseAuth.Auth.Auth().currentUser{ 让requestsRef=db.collection(“requestInfo”) let query=requestsRef.whereField(“userId”,isEqualTo:user.uid) query.getDocuments(){(querySnapshot,错

我为一个集合分配了一个侦听器,以接收该文档的更新筛选列表,但它无法将该文档压缩到原始类型的数组

下面是代码的详细说明:

如果let user=FirebaseAuth.Auth.Auth().currentUser{
让requestsRef=db.collection(“requestInfo”)
let query=requestsRef.whereField(“userId”,isEqualTo:user.uid)
query.getDocuments(){(querySnapshot,错误)位于
如果让err=error{
打印(错误本地化描述)
}
否则{
let documents=querySnapshot?.documents
self.requests=documents!.compactMap{document in
让request=try!document.data(as:RequestInfo.self)
打印(请求?.carModel)
打印(自我请求)
退货申请
}
}
}
}
我收到的文件正确无误,解码正确。我可以在控制台中看到正在打印
carModel
,但是
requests
数组是空的,因此没有任何用处


你知道为什么吗?

你在哪里看到它是空的,而不是别的地方?异步问题?有一个列表根据这个名为requests的数组更新,它是空的。打印给我汽车模型中的信息,请求应该附加到请求中,而不是。这段代码没有添加快照侦听器,它只是获取文档(一次性交易)。您需要的不是
getDocuments
,而是
addSnapshotListener
self.requests
属性仅在从闭包返回时设置,因此闭包内的print语句(
print(self.requests))
将始终在闭包结束前打印状态。您提到将结果分配给
列表
视图-这将有助于为我们提供更多上下文,并向我们显示您的视图,以及它与上面显示的代码的连接方式。