小编AAH*_*AAH的帖子

SwiftUI - 等待 Firestore getDocuments() 完成后再继续

我知道有几个具有类似结构的问题,但我真的很难让我的代码调用检索 Firestore 数据的方法,等到异步函数完成后再返回。

目前我有调用 的父函数getPledgesInProgress,该方法从 firebase 检索数据。初始化父级时会调用此方法。

    @State var pledgesInProgress = [Pledge]()
    var pledgePicked: Pledge?

    var body: some View {
        VStack{
       
           //LOTS OF CODE HERE WHICH ISN'T RELEVANT
    }
    
    func initVars(){
        pledgesInProgress = getPledgesInProgress(pledgePicked: pledgePicked ?? emptyPledge)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题在于,pledgesInProgress 变量使用空数组进行初始化,因为父级不会等到被调用函数完成获取 Firestore 文档后再继续。

func getPledgesInProgress(pledgePicked: Pledge)-> [Pledge]{
 
    let db = Firestore.firestore()
    var pledgesToReturn = [Pledge]() //INITIALISED AS EMPTY

  
   db.collection("Pledges")
      .getDocuments { (snapshot, error) in
         guard let snapshot = snapshot, error == nil else {
          //handle error
          return
        } …
Run Code Online (Sandbox Code Playgroud)

asynchronous swift google-cloud-firestore swiftui

4
推荐指数
1
解决办法
3532
查看次数