2017-07-27 44 views
1

我试图在Firebase中使用AuthErrorCode,但我不断收到错误消息。这里是我的代码:如何使用FirebaseAuth错误代码?

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 

     } 

    } 

} 

任何人都知道我在做什么错了?如果你没有看到我的代码中的错误在这里,他们是:

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' 

让我知道,如果你们有什么想法!

回答

3

它们在Swift中输入为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) 
     } 

} 



斯威夫特建议:

  • 不要在switch语句中使用break,他们在默认情况下打破的情况下完成后(fallthrough允许你检查匹配后每种情况下)
  • Switch NSError for Error
  • LoginErrorCode是您的自定义类吗?考虑切换到Swift> = 3语法的情况(较低的骆驼情况)