如何使用 FirebaseAuth 错误代码?

Bin*_*dey 2 ios firebase swift firebase-authentication

我正在尝试在 Firebase 中使用AuthErrorCode但我不断收到错误。这是我的代码:

private func handleErrors(err: NSError, loginHandler: LoginHandler?) {

    if let errCode = AuthErrorCode(rawValue: err.code) {

        switch errCode {

        case .errorCodeWrongPassword:  //Enum case 'errorCodeWrongPassword' not found in type 'AuthErrorCode'
            loginHandler?(LoginErrorCode.WRONG_PASSWORD)
            break

        case .errorCodeInvalidEmail:  //Enum case 'errorCodeInvalidEmail' not found in type 'AuthErrorCode'
            loginHandler?(LoginErrorCode.INVALID_EMAIL)
            break

        case .errorCodeUserNotFound:  //Enum case 'errorCodeUserNotFound' not found in type 'AuthErrorCode'
            loginHandler?(LoginErrorCode.USER_NOT_FOUND)
            break

        case .errorCodeEmailAlreadyInUse:  //Enum case 'errorCodeEmailAlreadyInUse' not found in type 'AuthErrorCode'
            loginHandler?(LoginErrorCode.EMAIL_ALREADY_IN_USE)
            break

        case .errorCodeWeakPassword:  //Enum case 'errorCodeWeakPassword' not found in type 'AuthErrorCode'
            loginHandler?(LoginErrorCode.WEAK_PASSWORD)
            break

        default:
            loginHandler?(LoginErrorCode.PROBLEM_CONNECTING)
            break

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

有人知道我做错了什么吗?如果您没有看到我的代码中的错误,它们是:

Enum case 'errorCodeWrongPassword' not found in type 'AuthErrorCode'

Enum case 'errorCodeInvalidEmail' not found in type 'AuthErrorCode'

Enum case 'errorCodeUserNotFound' not found in type 'AuthErrorCode'

Enum case 'errorCodeEmailAlreadyInUse' not found in type 'AuthErrorCode'

Enum case 'errorCodeWeakPassword' not found in type 'AuthErrorCode'
Run Code Online (Sandbox Code Playgroud)

如果你们有任何想法请告诉我!

nat*_*han 5

它们在 Swift 中导入,例如:从所有 case 值中AuthErrorCode.weakPassword删除。errorCode

private func handleErrors(err: NSError, loginHandler: LoginHandler?) {

    guard let errCode = AuthErrorCode(rawValue: err.code)
        else { return }

        switch errCode {

        case .wrongPassword:
            loginHandler?(LoginErrorCode.WRONG_PASSWORD) // Transform to wrongPassword
        case .invalidEmail:
            loginHandler?(LoginErrorCode.INVALID_EMAIL)
        case .userNotFound:
            loginHandler?(LoginErrorCode.USER_NOT_FOUND)
        case .emailAlreadyInUse:
            loginHandler?(LoginErrorCode.EMAIL_ALREADY_IN_USE)
        case .weakPassword:
            loginHandler?(LoginErrorCode.WEAK_PASSWORD)
        default:
            loginHandler?(LoginErrorCode.PROBLEM_CONNECTING)
        }
  
}
Run Code Online (Sandbox Code Playgroud)



快速建议:

  • 不要break在 switch 语句中使用,它们在 case 完成后默认中断(fallthrough允许您在匹配后检查每个 case)
  • 切换NSErrorError(Firebase 使用 NSError,如果你想切换到 Error ,请阅读Swift 4 get error code from error
  • LoginErrorCode 是您的自定义类吗?考虑切换到 Swift >= 3 语法(小驼峰式大小写)