@IBAction func loginEmailButton(sender: AnyObject) {
FIRAuth.auth()?.signInWithEmail(email.text!, password: password.text!, completion: { (user, error) in
if error != nil {
if let errCode = FIRAuthErrorCode(rawValue: error!.code) {
switch errCode {
case .ErrorCodeInvalidEmail:
self.emailLoginStatus = "invalid email"
case .ErrorCodeUserDisabled:
self.emailLoginStatus = "User account disabled"
case .ErrorCodeWrongPassword:
self.emailLoginStatus = "Wrong Password"
case .ErrorCodeUserNotFound:
self.emailLoginStatus = "User not found"
case .ErrorCodeNetworkError:
self.emailLoginStatus = "Could not connect"
default:
self.emailLoginStatus = "Login Error"
}
}
}else{
self.emailLoginStatus = "Logged"
}
})
if self.emailLoginStatus == "Logged"{
self.performSegueWithIdentifier("emailLoginToSearchSegue", sender: self)
}else{
showAlert(emailLoginStatus)
}
}
私はステップによって、コードのステップをデバッグでしたし、これが状況であるには実行されません。私は初めてloginEmailButton
をタップすると、メールアドレスとパスワードのパラメータが設定されていますsignInWithEmail
関数への呼び出しを行いますが、この関数は実行されません(デバッグ時の次のステップは、完了ブロックを実行しないで直接関数から外します)。スウィフト - Firebase関数signInWithEmail最初の呼び出し
次に、シミュレータにテキストなしの警告メッセージが表示されますが、警告を閉じてloginEmailButton
を再度タップすると、signInWithEmail
が正しく実行され、正しいメッセージで警告が表示されます。私はFirebaseのポッドを更新しようとしても、まだ問題は残っています。
提案がありますか?ありがとう!
それはあなたの問題を解決した場合:)ハッピー – Dravidian
ドラヴィダコーディング、あなたの答えは、理にかなって、ありがとうございました、しかし、私は成功せず前にそれをしようとした答えとして(私の答えの左上の目盛り)、これを受け入れます。 performSegueWithIdentifierをsignInWithEmail関数の中に置き、Loginボタンをタップすると、segueはsignInWithEmailエラーの検証なしでトリガされます。これは、最初の呼び出しでsignInWithEmail関数がまだ実行されておらず、この関数がperformSegueWithIdentifierを隠しているために発生します。 – Enzo
もしerr == nilならば、なぜエラー確認が必要でしょうか? – Dravidian