ios - 如何在恢复代码之前等待异步 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 可以访问数据?
解决方案
推荐阅读
- angular - 在 Kendo for Angular 中禁用打开上下文菜单
- node.js - 如何使用 Loopback 在模型中创建 CRUD 方法?
- nunit - 使用 NUnit GUI 运行器时 NUnit XML 输出在哪里?
- excel - 将 Pandas DataFrame 转换为 Excel 工作表
- regex - 匹配PowerShell正则表达式中的多个条件
- react-native - 什么是 React Native 的 jest-preset 中的“haste”配置
- r - 使用 R(DBI 包)从 SQL Server 表中删除行
- javascript - 将 ParticlesJs 集成到视图组件中
- python - AutoShardedBot 和普通 Bot 之间有什么重大差异吗?
- mysql - 为什么我在选择yes 再次播放后无法更新我的html 模型?