我想写一个可以接受任何Alamofire DataResponse值的方法。例如,我可能会传入DataResponse<Any>DataResponse<String>。但是,我找不到使它起作用的方法。例如,如果我尝试像这样仅使用“DataResonse”

static func isTimeout(response: DataResponse) -> Bool {
    if let error = response.result.error {
        if error._code == NSURLErrorTimedOut {
            return true
        }
    }
    return false
}

我收到一个编译错误:
Reference to generic type 'DataResponse' requires arguments in <...>
Insert <Any>.

但是,如果我将参数类型更改为DataResponse<Any>,则当我有DataResponse<String>时将无法使用。当我尝试将DataResponse<String>传递给函数时,出现的编译错误是:
Cannot convert value of type 'DataResponse<String>' to expected argument type 'DataResponse<Any>'

我也尝试了DataResponse<AnyObject>并得到了与上面相同的错误
DataResponse<Value>并收到此错误:
Use of undeclared type 'Value'

关于如何执行此操作的任何想法,这样我就不必仅针对略有不同的参数类型重复函数?

最佳答案

您忘了推断通用类型。尝试这个:

static func isTimeout<T>(response: DataResponse<T>) -> Bool {

09-03 23:45