Siesta Swift:RequestError.Cause.RequestCancelled不符合_ErrorCodeProtocol

时间:2017-12-28 05:18:34

标签: siesta-swift

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

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

    }
}

我收到此错误:

  

参数类型' RequestError.Cause.RequestCancelled.Type'不符合预期类型' _ErrorCodeProtocol'

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

1 个答案:

答案 0 :(得分:2)

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 {

}