【发布时间】:2018-10-23 14:30:52
【问题描述】:
从 firebase 检索单个值并获取它可能需要做很多工作,以便我可以在闭包之外使用它,但我似乎无法做任何更简单的工作......
虽然我可能创建了一个像样的处理程序,也可能没有创建一个像样的处理程序,但到目前为止,它不会引发任何错误,直到我尝试调用它,然后我得到:无法将类型“字符串”的值转换为预期的参数类型“(字符串) - > ()'
A:如何调用函数? B:有更简单的方法吗?
var myName = ""
func getMyName(completion: @escaping (String) -> ()){
if let uid = Auth.auth().currentUser?.uid{
databaseRef.child("bodhi").child((uid)).observeSingleEvent(of: .value, with: { (snapshot) in
if let bodhiDict = snapshot.value as? [String: AnyObject]
{
let myName = (bodhiDict["Name"] as? String)!
print ("myName in the closure: \(myName)")
completion(myName)
} else {
completion("")
}
})
}
}
getMyName(completion: (myName))
print ("myName Outside the closure: \(myName)")
【问题讨论】:
标签: swift firebase firebase-realtime-database closures