Ios Firebase segue身份验证
目前我正在使用Firebase身份验证,并处理了许多错误,如错误的用户名、密码、空字段等,一切正常。但是,当我尝试向下一页添加一个segue并使用数据库中不存在的随机电子邮件时,Firebase auth没有给我任何错误,只是将用户传递到下一页。当我删除segue并放入random user时,它会给我一个找不到这样的用户的错误,这就是我试图用segue实现的。请告知,可能有什么问题 AuthService文件Ios Firebase segue身份验证,ios,swift,firebase,firebase-authentication,Ios,Swift,Firebase,Firebase Authentication,目前我正在使用Firebase身份验证,并处理了许多错误,如错误的用户名、密码、空字段等,一切正常。但是,当我尝试向下一页添加一个segue并使用数据库中不存在的随机电子邮件时,Firebase auth没有给我任何错误,只是将用户传递到下一页。当我删除segue并放入random user时,它会给我一个找不到这样的用户的错误,这就是我试图用segue实现的。请告知,可能有什么问题 AuthService文件 func login(email: String, password: String
func login(email: String, password: String, onComplete: Completion?) {
FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
if error != nil {
self.handleFirebaseError(error: error! as NSError, onComplete: onComplete)
} else {
onComplete?(nil, user)
}
})
}
func handleFirebaseError(error: NSError, onComplete: Completion?) {
print(error.debugDescription)
if let errorCode = FIRAuthErrorCode(rawValue: error.code) {
switch (errorCode) {
case .errorCodeInvalidEmail:
onComplete?("Invalid email address", nil)
break
case .errorCodeWrongPassword:
onComplete?("Invalid password", nil)
break
case .errorCodeUserNotFound:
onComplete?("Can't find user", nil)
break
default:
onComplete?("There was a problem authentication. Try again", nil)
}
}
}
视图控制器
@IBAction func loginBtnTapped(_ sender: Any) {
if let email = emailField.text, let pass = passwordField.text , (email.characters.count > 0 && pass.characters.count > 0) {
AuthService.instance.login(email: email, password: pass, onComplete: { (errMsg, data) in
guard errMsg == nil else {
self.alert(title: "Error Authentication", errMsg: errMsg!)
return
}
})
} else {
self.alert(title: "Username and password required", errMsg: "You must enter both a username and a password")
}
}
如果在情节提要中创建序列,它将立即激发并打开下一个视图控制器。您拥有的登录代码是异步的,脚本不会等待它
如果您配置了segue(尝试在那里添加断点),则很可能甚至不会调用loginBtnTapped方法。hybridcattt是正确的。我要补充一个更具体的答案。使用segues时,确保下一个屏幕没有直接通过按钮连接,否则无论您等待的结果如何,只要您点击它,它就会立即启动 将视图控制器连接到下一个视图控制器,如下所示: 然后在该序列中添加一个标识符
最后,当您得到您等待的内容(例如成功登录)时,请执行性能检查非常感谢!我听从了你的指示,问题解决了!非常欢迎。您可能希望选择此作为问题的答案。:)