我想写一个可以接受任何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 {