我想要一个函数,对于任何给定的错误
,都会给我一些描述
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"
}
}
上面不是真正的代码,我不想要一个String
描述,而是一个Dictionary
,但这在问题的上下文中并不重要。
问题是我不知道如何区分 Error
是 NSError
的子类,而不是因为任何 swift 错误都可以桥接到 NSError
。 swift 有可能吗?
最佳答案
正如您已经注意到的,任何符合 Error
的类型都可以被桥接
到 NSError
,因此 error is NSError
始终为真,并且强制转换
错误作为 NSError
总是成功。
你可以做的是使用 type(of:)
检查值的动态类型:
type(of: error) is NSError.Type
如果 error
是 NSError
或其子类的实例,则计算结果为 true
。
关于ios - 如何检查错误是否是 NSError 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44694549/