如何使用结构中的函数从Swift中的firebase快照中获取数据?
我正在从CloudFireStore获取数据以填充ListView。我已经设法将数据放入数组,但当我返回数组时,它显示为空 //编辑 我已经实现了一个完成处理程序,非常适合“测试代码”,但是当在“func industryPosts”中调用并传递到“myArray”中时,它返回nil。而“测试代码”返回数据。我是个新手,一般来说都很敏捷。请让我知道我错过了什么。谢谢 //编辑 我无法返回值,但在需要使用它的地方调用industryPosts是有效的如何使用结构中的函数从Swift中的firebase快照中获取数据?,swift,struct,google-cloud-firestore,swiftui,Swift,Struct,Google Cloud Firestore,Swiftui,我正在从CloudFireStore获取数据以填充ListView。我已经设法将数据放入数组,但当我返回数组时,它显示为空 //编辑 我已经实现了一个完成处理程序,非常适合“测试代码”,但是当在“func industryPosts”中调用并传递到“myArray”中时,它返回nil。而“测试代码”返回数据。我是个新手,一般来说都很敏捷。请让我知道我错过了什么。谢谢 //编辑 我无法返回值,但在需要使用它的地方调用industryPosts是有效的 import Foundation impor
import Foundation
import SwiftUI
class IndustryData {
var _snapshotArray : Array<Any>?
func getSnapshotArray(collectionRef: String, completionHandler: @escaping (Array<Any>?, NSError?) -> ()){
if let snapArray = self._snapshotArray {
completionHandler(snapArray, nil)
} else {
var snapArray : Array<Any> = []
db.collection(collectionRef).getDocuments { (snapshot, error) in
guard let snapshot = snapshot else {
print("Error - > \(String(describing: error))")
return
}
for document in snapshot.documents {
let item = Industry(avatar: document.get("avatar") as! String, name:document.documentID, tags: document.get("tags") as! String)
snapArray.append(item)
}
self._snapshotArray = snapArray
completionHandler(snapArray, error as NSError?)
}
}
}
}
myArray返回行业数组 您必须使用一个完成块来返回te数据,简单地使用return将导致返回数组而不从firestore获取数据。如果您愿意,我可以添加一个示例。可能重复感谢@AchidF,我希望有一个示例代码。@Joakim,我在另一个问题上遵循了代码,它与示例代码的预期效果一样。我正在更新这个问题,以反映到目前为止我已经实现了什么。我对这一切都不熟悉,请容忍我,。。。
func getposts()-> [Industry] {
let data = IndustryData()
data.getSnapshotArray(collectionRef: "industry") { (snapshotArray, error) in
if snapshotArray != nil {
self.myArray = snapshotArray!
}
}
return myArray as! [Industry]
}