我如何访问firebase .ref闭包内的变量并在外面使用它们

时间:2016-05-02 05:03:41

标签: ios swift firebase

我在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)

}

2 个答案:

答案 0 :(得分:3)

这是因为您在从Firebase获取数据之前执行了print(self.name)。

您可以将查询放在viewWillAppear中,然后在viewDidAppear或viewDidLoad中执行print(self.name)。最好的方法是实际使用闭包,只有在数据返回后才触发下一步(打印),所以通过对函数进行引用(使用print(self.name)或对数据有任何其他用途)外面的viewDidLoad。

答案 1 :(得分:0)

在类中创建func然后将func放在类中,这样您就可以在函数内设置该变量