我尝试使用IOS swift和Firebase在故事板中创建身份验证页面。这是我的storyboardsegue宣言:
然后我使用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 true
或return false
放在withCompletionBlock
中,因为该块返回void。我如何使这项工作?
答案 0 :(得分:2)
使用当前实现无法实现此功能。您有两种方法可以做到这一点:
db.authUser()
同步并返回结果
@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
}
})
}