【发布时间】:2017-03-25 03:39:45
【问题描述】:
我有一个错误类是:
public enum ModelError: Error {
case invalidArray(model: String)
var localizedDescription: String {
switch self {
case .invalidArray(model: let model):
return "\(model) has an invalid array"
default:
return "modelError"
}
}
}
当在回调函数中作为Error 传递时,我想访问它的自定义localizedDescription。例如:
func report(_ error: Error) {
print("Error report: \(error.localizedDescription)")
}
但是调用report(ModelError.invalidArray(model: "test")) 打印:
"The operation couldn’t be completed. (ModelError error 0.)"
这样的事情对于 NSError 来说似乎是可行的,因为我可以在那里覆盖 localizedDescription 属性。但我不想使用NSError,因为这不是一件快速的事情,而且很多库都使用Error。
【问题讨论】:
-
不应该
ModelError(model: "test")是ModelError.invalidArray(model: "text")吗? -
是的,错误的复制粘贴。谢谢!
-
如果
ModelError符合CustomStringConvertible并且localizeDescription重命名为description,我可以让您的代码工作。然后打印error而不是error.localizedDescription。 -
@rmaddy 那不是超出了 CustomStringConvertible 的范围吗?
-
@PEEJWEEJ 我不知道,是吗?我认为任何想要提供
description方法的人都可以使用该协议。我自己还在学习 Swift。
标签: swift error-reporting