我想要一个函数,对于任何给定的函数,它Error会给我一些描述
protocol CustomError { }
func customDescription(_ error: Error) -> String {
switch error {
case let customError as CustomError:
return "custom error"
case ???:
return "not subclass of NSError"
case let nsError as NSError:
return "subclass of NSError"
}
}
Run Code Online (Sandbox Code Playgroud)
上面不是真正的代码,我不想要String描述,而是a Dictionary,但这在问题的上下文中并不重要.
问题是我不知道如何区分Errors是哪个子类,NSError哪个不是因为任何快速错误都可以桥接到NSError.有可能迅速吗?
正如您已经注意到的那样,任何符合的类型Error都可以桥接到NSError,因此error is NSError始终是真的,并且强制转换
error as NSError总是成功.
你可以做的是检查值的动态类型type(of:):
type(of: error) is NSError.Type
Run Code Online (Sandbox Code Playgroud)
求值trueif error是实例NSError还是子类.
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |