我正在尝试检查请求可能会通过执行一些自定义检查并丢下我自己的自定义错误而引发的确切错误。
if let cause = resource.latestError?.cause {
if case RequestError.Cause.RequestCancelled = cause {
}
}
我得到此错误:
参数类型'requesterror.cause.requestcancelled.type'不符合预期类型'_ERRORCODEPROTOCOL'
有什么想法我如何检查错误的确切原因,然后返回我自己的自定义错误?
午睡的错误原因是扩展的,因此不是枚举,因此if case
语法与它们不起作用。(您遇到的编译器错误是因为Swift认为您正在尝试使用case
从没有错误的错误中提取错误代码。)
午睡的错误原因是一棵不同类型的树。而不是使用if case
,而是使用is
匹配错误原因:
if let cause = resource.latestError?.cause {
if cause is RequestError.Cause.RequestCancelled {
}
}
…或简单:
if resource.latestError?.cause is RequestError.Cause.RequestCancelled {
}
…或如果您需要将类型的错误错误分配给变量,以便您可以进一步做一些事情:
if let cause = resource.latestError?.cause as? RequestError.Cause.RequestCancelled {
}