我们定义了一个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) //请输入用户名
这就拿到我们期望的结果了
参考
网友评论