【发布时间】:2015-11-24 16:18:55
【问题描述】:
我正在尝试使用 IOS swift 和 Firebase 在情节提要中创建身份验证页面。这是我的故事板声明:
然后我使用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 不再为零,因为用户已经登录所以它返回真。我不想点击两次才能登录,我只想点击一次。我不能只将return true 或return false 放在withCompletionBlock 中,因为该块返回无效。我该如何完成这项工作?
【问题讨论】:
-
不能同步
db.authUser调用吗? -
或更简单地说,不要在
shouldPerformSegue中进行此身份验证检查。您应该在用户单击“登录”并在身份验证块中调用 auth 方法,检查错误/nil,如果一切正常,则执行实际的 segue