想要在Firebase身份验证完成后调用方法

时间:2018-06-30 23:07:37

标签: ios swift firebase firebase-authentication

   func signUpPressed(){
    guard let email = signupview.emailTextField.textField.text, let password = signupview.passwordTextField1.textField.text, let name = signupview.nameTextField.textField.text else{
        return
    }
    Auth.auth().createUser(withEmail: email, password: password, completion: {(User, error) in

        if error != nil{
            print(error)
            return
        }
        let ref  = Database.database().reference()
        let uid = User?.user.uid!
        let userReference = ref.child("Users").child((uid)!)
        let values = ["name": name, "email": email]
        userReference.updateChildValues(values, withCompletionBlock: {(err, ref) in

            if err != nil{
                print(err)
                return
            }
            print("User saved to firebase")
        })
    })
    getUserInfo()     
}

我希望由此实现的是能够在Firebase中创建用户之后存储所有用户信息。问题是getUserInfo方法在print("User saved to firebase")之前执行。我还了解到,firebase是异步的,这意味着调用总是立即返回,而不会阻塞代码等待结果。只要准备好,结果就会在以后的某个时候出现。现在,我想做的就是在结果“进入”之后调用一个方法。我该怎么办?

2 个答案:

答案 0 :(得分:0)

将对调用getUserInfo()的调用放在结果准备就绪时执行的完成块内。

答案 1 :(得分:0)

异步不会阻塞主线程,也不会阻止方法

use

从响应返回之前开始运行,因此您需要像这样将其插入getUserInfo() 的完成块内

updateChildValues