swift - 枚举返回对象(NSError)

标签 swift enums

这个相对简单的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
                                                                    ^^^^^^

关于swift - 枚举返回对象(NSError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952748/

相关文章:

ios - UITableView 中单元格之间的空间

ios - 在 iOS10 上,userNotification 没有显示在横幅中,没有错误,仅在 iPhone 锁定时有效

ios - UINavigationBar 下的 UIViewController?

c# - c# 'bracketed' 类型转换的运行时等效项是什么

python - 如何在每次迭代中获取 Enum 属性的随机值?

c# - 从 String 解析枚举不起作用

ios - SwiftUI 中的结构体初始化 : 'self' used before all stored properties are initialized

swift - 快速更改默认的全局色调颜色

c# - EF 中的常量导致异常

java - 有序列表或集合中的枚举