Swift知识集

[Swift Tips] 调用Error类型的localized

2018-05-25  本文已影响1人  冰琳92

我们定义了一个LoginError, 并实现localizedDescription方法

enum LoginError: Error {
    case usernameEmpty
    case passwordEmpty
    
    var localizedDescription: String {
        switch self {
        case .usernameEmpty:
            return "请输入用户名"
        case .passwordEmpty:
            return "请输入密码"
        }
    }
}

将我们定义的枚举转成Error, 预想的localizedDescription应该为请输入用户名

let error: Error = LoginError.usernameEmpty
print(error.localizedDescription)//The operation couldn’t be completed. (LoginError error 0.)

但是这个打印结果为:
The operation couldn’t be completed. (LoginError error 0.) 并不是我们所期望的

那我们要怎么做呢

只需要实现LocalizedError

enum LoginError: Error {
    case usernameEmpty
    case passwordEmpty
}

extension LoginError: LocalizedError {
    var errorDescription: String? {
        switch self {
        case .usernameEmpty:
            return "请输入用户名"
        case .passwordEmpty:
            return "请输入密码"
        }
    }
}

再次测试:

let error: Error = LoginError.usernameEmpty
print(error.localizedDescription) //请输入用户名

这就拿到我们期望的结果了

参考

上一篇 下一篇

猜你喜欢

热点阅读