我正在从Cloud Firestore获取数据以填充ListView。我设法将数据放入数组,但是当我返回数组时,它显示为空。
//编辑
我已经实现了一个完成处理程序,非常适合“测试代码”,但是当在“ func industryPosts”中调用并传递到“ myArray”时,它返回nil。而“测试代码”则返回数据。我是完成处理程序和Swift的新手。请让我知道我在想什么。谢谢。
//编辑 我无法返回这些值,但是在需要使用它的地方打电话给industryPosts可以了!
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?)
}
}
}
}
然后在需要的地方调用以下函数
func getposts()-> [Industry] {
let data = IndustryData()
data.getSnapshotArray(collectionRef: "industry") { (snapshotArray, error) in
if snapshotArray != nil {
self.myArray = snapshotArray!
}
}
return myArray as! [Industry]
}
myArray返回了行业数组!