如何使用结构中的函数从Swift中的firebase快照中获取数据?

如何使用结构中的函数从Swift中的firebase快照中获取数据?,swift,struct,google-cloud-firestore,swiftui,Swift,Struct,Google Cloud Firestore,Swiftui,我正在从CloudFireStore获取数据以填充ListView。我已经设法将数据放入数组,但当我返回数组时,它显示为空 //编辑 我已经实现了一个完成处理程序,非常适合“测试代码”,但是当在“func industryPosts”中调用并传递到“myArray”中时,它返回nil。而“测试代码”返回数据。我是个新手,一般来说都很敏捷。请让我知道我错过了什么。谢谢 //编辑 我无法返回值,但在需要使用它的地方调用industryPosts是有效的 import Foundation impor

我正在从CloudFireStore获取数据以填充ListView。我已经设法将数据放入数组,但当我返回数组时,它显示为空

//编辑

我已经实现了一个完成处理程序,非常适合“测试代码”,但是当在“func industryPosts”中调用并传递到“myArray”中时,它返回nil。而“测试代码”返回数据。我是个新手,一般来说都很敏捷。请让我知道我错过了什么。谢谢

//编辑 我无法返回值,但在需要使用它的地方调用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?)
            }
        }
    }
}

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]
    }