午睡 Swift: RequestError.Cause.RequestCancelled 不符合 _ErrorCodeProtocol

Siesta Swift: RequestError.Cause.RequestCancelled not conform to _ErrorCodeProtocol

我正在尝试通过执行一些自定义检查并抛出我自己的自定义错误来检查请求可能抛出的确切错误。

if let cause = resource.latestError?.cause {
    if case RequestError.Cause.RequestCancelled = cause {

    }
}

我收到此错误:

Argument type 'RequestError.Cause.RequestCancelled.Type' does not conform to expected type '_ErrorCodeProtocol'

有什么想法可以检查错误的确切原因,然后 return 我自己的自定义错误吗?

Siesta 的错误原因可以扩展,因此 不是枚举 ,因此 if case 语法不适用于它们。 (你得到的编译器错误是因为 Swift 认为你正在尝试使用 case 从没有错误代码的错误中提取错误代码。)

Siesta 的错误原因是不同类型的树。而不是使用 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 {

}