我想要一个函数,对于任何给定的函数,它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
,但这在问题的上下文中并不重要.
问题是我不知道如何区分Error
s是哪个子类,NSError
哪个不是因为任何快速错误都可以桥接到NSError
.有可能迅速吗?
正如您已经注意到的那样,任何符合的类型Error
都可以桥接到NSError
,因此error is NSError
始终是真的,并且强制转换
error as NSError
总是成功.
你可以做的是检查值的动态类型type(of:)
:
type(of: error) is NSError.Type
Run Code Online (Sandbox Code Playgroud)
求值true
if error
是实例NSError
还是子类.
归档时间: |
|
查看次数: |
560 次 |
最近记录: |