首页 > 解决方案 > 如何在恢复代码之前等待异步 Firebase 函数?

问题描述

我想在中加载所需的数据,AppDelagate所以这是我目前拥有的:

        // Override point for customization after application launch.
        FirebaseApp.configure()
        FirebaseFunctions().getCompanies()
        DispatchGroup().wait()
        return true
    }

该函数FirebaseFunctions().getCompanies()如下所示:

func getCompanies(){
        DispatchGroup().enter()
        let db = Firestore.firestore()
        db.collection("companies").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    let company = Company(name: document.documentID, discount: document.data()["discount"] as! String, website: document.data()["website"] as! String, code: document.data()["code"] as! String, categories: document.data()["categories"] as! String)
                    LocalData.companies.companyList.append(company)
                }
            }
            DispatchGroup().leave()
        }
    }

但是,当我使用这些函数并尝试访问存储数据的 LocalData 类时,我遇到了一个错误,因为它们是异步加载的。如何延迟 AppDelagate 中的应用程序,直到加载数据,以便我的 UI 可以访问数据?

标签: iosswiftfirebaseasynchronousgoogle-cloud-firestore

解决方案


推荐阅读