我是Swift的新手,在理解异步函数的工作原理方面遇到了一些麻烦。我需要创建一个包含Firebase对象所有子键的数组,然后返回它。
这是我的准则
import Foundation
import FirebaseDatabase
import FirebaseDatabaseSwift
class SettingsViewModel: ObservableObject {
var ref = Database.database().reference()
func getInstituteList(course: String) -> [String] {
var allGroupArray = [String]()
ref.child("Курс - \(course)").observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
allGroupArray.append(snap.key)
}
})
return allGroupArray
}
}
返回的值是给另一个变量在一个选择器。我知道这个函数应该是异步的,否则数据不会到达的时间。我只是真的需要有人使这个函数异步,因为我不能理解它自己。
2条答案
按热度按时间nbysray51#
我不知道Firebase是否支持async/await,但是添加continuation非常容易
rjzwgtxy2#
这个answer提到了
DatabaseReference.getData()
async函数,如果我理解正确的话,那么你可以这样做: