我想编写一个可以接受任何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'
有关如何执行此操作的任何想法,所以我不必仅为略有不同的参数类型复制函数吗?
答案 0 :(得分:5)
您忘记推断通用类型。试试这个:
static func isTimeout<T>(response: DataResponse<T>) -> Bool {