Swift-检查枚举类型/值

Swift-检查枚举类型/值,swift,enums,Swift,Enums,我有一个用于传回数据值或错误的枚举结构: public enum Result<Value> { case success(Value) case failure(Error) } 结果类型是通过闭包传递回来的类型,类似于以下内容: completion(.failure(NetworkServiceError.invalidUrlRequest)) 我正在编写一个测试用例,我需要能够检查该错误是否是上述枚举中的特定类型。要让您了解我正在做什么以及我要检查它的位置

我有一个用于传回数据值或错误的枚举结构:

public enum Result<Value> {
    case success(Value)
    case failure(Error)
}
结果类型是通过闭包传递回来的类型,类似于以下内容:

completion(.failure(NetworkServiceError.invalidUrlRequest))
我正在编写一个测试用例,我需要能够检查该错误是否是上述枚举中的特定类型。要让您了解我正在做什么以及我要检查它的位置,请参阅以下示例代码:

networkClient.callAPI() { (result) in
    switch result {
    case .success( _):
        // do something
    case .failure(let error):
        if error == NetworkServiceError.invalidUrlRequest { // THIS IS WHERE IT FAILS
            // do something
        } else {
            // do something
        }
    }
}

对于我的情况,我有点困惑,不知道该怎么办;我可能忽略了一些非常简单的事情。提前感谢。

如果您从中查看实现,您会发现它们使
错误
类型都是通用的。这将允许完成闭包知道它得到的错误类型。然后开关可以与特定情况匹配

因此,如果闭合得到一个
结果
,那么开关箱可能会变为

case .failure(.jsonParsing):

如果您不想更改
结果
,可以使用这样的案例来匹配特定类型的错误

case .failure(let error as NetworkServiceError):

您还可以将
case.failure(networkservicererror.jsonParsing)
与非类型错误
结果一起使用。
case .failure(let error as NetworkServiceError):