gpt4 book ai didi

ios - 从 Firebase 观察者代码块 swift 中的函数返回数据

转载 作者:行者123 更新时间:2023-11-28 15:15:11 25 4
gpt4 key购买 nike

我是 firebase 的新手,我想知道是否有任何可能的方法在观察者 block 中返回数据。我有类 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 包含空字典。有什么解决办法吗?

最佳答案

更新:当您调用 .observeSingleEvent 时,您会异步调用该方法。这意味着该方法将开始工作,但响应将稍后到来并且不会阻塞主线程。您调用此方法,但还没有数据,因此您返回一个空字典。

如果您使用完成 block ,那么您将在方法操作完成后立即获取数据。

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(["" : ""])
}
}
}

关于ios - 从 Firebase 观察者代码块 swift 中的函数返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com