我尝试进行 firebase 身份验证。我已经安装了所有必要的 pod 并制作了所有需要的方法。当我点击“登录”时,即使我输入了错误的电子邮件和密码,我也会收到错误消息(例如密码错误),并且我的视图立即更改为我的目标视图(下一个 ViewController)。我不知道为什么会这样,因为我做了 if 声明。除非我输入正确的电子邮件和密码,否则我想拥有我的登录页面。
@IBAction func loginTapped(_ sender: UIButton) {
if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password =
passwordTextField.text?.trimmingCharacters(in:
.whitespacesAndNewlines) {
Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
if let e = error {
// Can't sign in
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
} else {
self.performSegue(withIdentifier: "loginToHome", sender: self)
}
}
}
}
答案 0 :(得分:1)
您可以先尝试检查是否存在错误。如果是,将显示错误消息。如果没有错误,将执行登录成功segue。
@IBAction func loginTapped(_ sender: UIButton) {
if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password = passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
if error != nil { // there's an error - show error label
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
} else { //no error - perform segue
// no error - perform segue
self.performSegue(withIdentifier: "loginToHome", sender: self) } } } }
编辑:您也可以在检查存在错误后添加 return
- 后面的代码将不会被执行:
@IBAction func loginTapped(_ sender: UIButton) {
if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password = passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
if error != nil { // there's an error - show error label
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
return // activities that follow will not be performed
} else { //no error - perform segue
self.performSegue(withIdentifier: "loginToHome", sender: self) } } } }