Swift

【Swift】FirebaseのSignUpでエラーハンドリング

エラーハンドリングの目的

何らかのfunctionを実行して、

errorが返ってきた場合にprint()でデバッグエリアにエラー文を表示しただけだと、

ユーザーには何が起こっているのか全くわかりません。

そのため、返ってきたエラー文をユーザーにもわかる文に翻訳してアラート表示などしてあげる必要があります。

例えばこんな感じ。

方法

まず、UserModel.swiftで FirebaseAuth SDK の

createUser functionを呼び出す際に、以下のように記述します。

UserModel.swift

static func signUp(email: String, pass: String, failure:@escaping (String) -> Void, success:@escaping () -> Void){
        Auth.auth().createUser(withEmail: email, password: pass) { user, error in
            let request = UserModel()
            if let error = error {
                if let errCode = AuthErrorCode(rawValue: error._code) {
                    switch errCode {
                    case .invalidEmail:
                        failure("メールアドレスの形式が違います。")
                    case .emailAlreadyInUse:
                        failure("このメールアドレスはすでに使われています。")
                    case .weakPassword:
                        failure("パスワードは6文字以上で入力してください。")
                    default:
                        failure("エラーが起きました。\nしばらくしてから再度お試しください。")
                    }
                }
            }
            if let _ = user {
                self.update(request: request, success: {})
                success()
            }
        }
    }

 

5行目で、error から errorCodeを作成しています。

errorCodeの内容に応じて、日本語をfailureで返します。

このsignUp function を、任意のViewControllerで呼び出します。

ViewController.swift

UserModel.signUp(email: "example@mail.com", pass: "testes", failure: { (error) in
    self.alert(message: error)
}) {
    //SignUp成功時の処理
}

 

2行目のalert() function で 、返ってきたエラー文をユーザーにアラート表示させています。

ABOUT ME
伊原 萌夏
スクール担当 兼 iOS(時々Web)エンジニア。 2019年7月に大学を一年半で辞め、大学とは別で勉強していたプログラムの世界で生きていくことを決意。翌月8月に入社。 主にSwiftのスクールを担当。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA