我在firebase函数中声明了一个变量,我想在函数之外使用它。我已经在函数外部声明了变量,然后将其设置在firebase函数内部,但我仍然无法检索如何处理它。
let ref = firebasehelper.firebaseURL()
var userDict = [String:String]()
var name:String!
override func viewDidLoad() {
super.viewDidLoad()
ref.childByAppendingPath("backend/posts").queryOrderedByChild("jobOfferFromId").queryEqualToValue(ref.authData.uid).observeEventType(.ChildAdded, withBlock: {snapshot in
self.name = snapshot.value["jobDescribe"] as! String
// work greate in here
print(self.name)
})
// does not work outside of the Firebase function I want to access the data out here
print(self.name)
}
答案 0 :(得分:3)
这是因为您在从Firebase获取数据之前执行了print(self.name)。
您可以将查询放在viewWillAppear中,然后在viewDidAppear或viewDidLoad中执行print(self.name)。最好的方法是实际使用闭包,只有在数据返回后才触发下一步(打印),所以通过对函数进行引用(使用print(self.name)或对数据有任何其他用途)外面的viewDidLoad。
答案 1 :(得分:0)
在类中创建func
然后将func
放在类中,这样您就可以在函数内设置该变量