枚举返回对象 (NSError)
Enum returning object (NSError)
这个相对简单enum
,编译得很好,但是...
public protocol AuthKitErrorProtocol {
var error: NSError { get }
}
enum AuthKitError: AuthKitErrorProtocol {
case SignInFailedInvalidUsernamePassword
case SignInFailedInvalidSecondFactor
var error: NSError {
let (codeK: Int,
userInfoK: Dictionary<String, String>
) = {
switch self {
case .SignInFailedInvalidUsernamePassword:
return (1000,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Invalid usename or password",
NSLocalizedRecoverySuggestionErrorKey: "Please try again" ]
)
case .SignInFailedInvalidSecondFactor:
return (1001,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Invalid second factor code",
NSLocalizedRecoverySuggestionErrorKey: "Please try again" ]
)
default:
return (-999,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Unknown reason",
NSLocalizedRecoverySuggestionErrorKey: "Please call customer support" ]
)
}
}()
return NSError(domain: kAuthKitErrorDomain, code: codeK, userInfo: userInfoK)
}
}
但是当试图从中提取时
var err: NSError = AuthKitError.SignInFailedInvalidUsernamePassword
println("error is : \(err)")
它失败了,说:
AuthKitError is not convertible to NSError
如有任何想法,我们将不胜感激!谢谢你的时间。
error
是枚举的一个实例属性,而AuthKitError.SignInFailedInvalidUsernamePassword
是枚举的一个实例,所以你必须显式读取它的值:
var err: NSError = AuthKitError.SignInFailedInvalidUsernamePassword.error
^^^^^^
这个相对简单enum
,编译得很好,但是...
public protocol AuthKitErrorProtocol {
var error: NSError { get }
}
enum AuthKitError: AuthKitErrorProtocol {
case SignInFailedInvalidUsernamePassword
case SignInFailedInvalidSecondFactor
var error: NSError {
let (codeK: Int,
userInfoK: Dictionary<String, String>
) = {
switch self {
case .SignInFailedInvalidUsernamePassword:
return (1000,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Invalid usename or password",
NSLocalizedRecoverySuggestionErrorKey: "Please try again" ]
)
case .SignInFailedInvalidSecondFactor:
return (1001,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Invalid second factor code",
NSLocalizedRecoverySuggestionErrorKey: "Please try again" ]
)
default:
return (-999,
[ NSLocalizedDescriptionKey: "Operation failed.",
NSLocalizedFailureReasonErrorKey: "Unknown reason",
NSLocalizedRecoverySuggestionErrorKey: "Please call customer support" ]
)
}
}()
return NSError(domain: kAuthKitErrorDomain, code: codeK, userInfo: userInfoK)
}
}
但是当试图从中提取时
var err: NSError = AuthKitError.SignInFailedInvalidUsernamePassword
println("error is : \(err)")
它失败了,说:
AuthKitError is not convertible to NSError
如有任何想法,我们将不胜感激!谢谢你的时间。
error
是枚举的一个实例属性,而AuthKitError.SignInFailedInvalidUsernamePassword
是枚举的一个实例,所以你必须显式读取它的值:
var err: NSError = AuthKitError.SignInFailedInvalidUsernamePassword.error
^^^^^^