如何在shoudPerformSegueWithIdentifier和Firebase中对用户进行身份验证?

时间:2015-11-24 16:18:56

标签: ios swift firebase

我尝试使用IOS swift和Firebase在故事板中创建身份验证页面。这是我的storyboardsegue宣言: enter image description here

然后我使用shouldPerformSegueWithIdentifier对其进行身份验证。但是,我还要在Firebase中记录用户,以便我的代码如此:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
if db.authData != nil {

  return true

} else {

  let email = emailTextField.text
  let password = passwordTextField.text

  db.authUser(email, password: password, withCompletionBlock: {
    error, authData in
    if error != nil {
      print(error.description)
    } else {
      print("logged in")
    }
  })

  return false
}

}

此代码有些工作,但我必须单击登录按钮两次,因为第一次登录Firebase中的用户,第二次db.authData不再为零,因为用户已登录所以它返回true。我不想点击两次登录,我只想点击一次。我不能将return truereturn false放在withCompletionBlock中,因为该块返回void。我如何使这项工作?

1 个答案:

答案 0 :(得分:2)

使用当前实现无法实现此功能。您有两种方法可以做到这一点:

  1. 使db.authUser()同步并返回结果
  2. 不是将登录按钮segue连接到下一个屏幕,而是添加IBAction方法并实现类似
  3. 的方法

    @IBAction func login(sender : AnyObject?)
    {
       let email = emailTextField.text
       let password = passwordTextField.text
    
       db.authUser(email, password: password, withCompletionBlock: {
         error, authData in
           if error != nil
           {
              print(error.description)
           }
           else
           {
              // Navigate to next screen
              // Start perform segue here
           }
        })  
    }