我是 firebase 的新手,我想知道是否有任何可能的方法来返回观察者块中的数据。我有课ApiManager:NSObject
在这个类中,我想创建所有的 firebase 函数,该函数将从数据库返回某种数据。这是我在这门课中的职责之一
func downloadDailyQuote() -> [String:String] {
let reference = Database.database().reference().child("daily")
reference.observeSingleEvent(of: .value) { (snap) in
return snap.value as! [String:String] //I want to return this
}
return ["":""] //I don't want to return this
}
如果我现在做类似的事情let value = ApiManager().downloadDailyQuote()
, value
包含空字典。有什么解决办法吗?
Update:当您调用 .observeSingleEvent 时,您会异步调用该方法。这意味着该方法将开始工作,但响应会稍后出现,并且不会阻塞主线程。您调用此方法,但还没有数据,因此您返回一个空字典。
如果您使用完成块,那么方法操作完成后您将立即获取数据。
func downloadDailyQuote(completion: @escaping ([String:String]) -> Void) {
let reference = Database.database().reference().child("daily")
reference.observeSingleEvent(of: .value) { (snap) in
if let dictionaryWithData = snap.value as? [String:String] {
completion(dictionaryWithData)
} else {
completion(["" : ""])
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)