エラーハンドリングの目的
何らかの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
株式会社Playgroundのサービス
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン