【发布时间】:2018-04-05 21:38:41
【问题描述】:
我正在将此代码与Alamofire 3 迁移到Alamofire 4。
参考为:Creating a generic method with AlamoFire in Swift
我有这门课:
import Foundation
import Alamofire
import AlamofireObjectMapper
import ObjectMapper
class HttpHandler {
static func sendRequest<T:BaseUser>(url: String, parameters: [String: AnyObject]?) -> T {
let res : T
Alamofire.request(url)
.validate()
.responseObject { (response: DataResponse<[T]>) in
switch response.result {
case .Success(let value):
res.valueHandle?(value)
case .Failure(let error):
res.errorHandle?(error)
}
}
return res
}
}
class BaseUser: ResponseObjectSerializable {
var valueHandle : ((BaseUser)->())?
var errorHandle : ((NSError)->())?
required init?(response: HTTPURLResponse, representation: AnyObject) {
}
}
public protocol ResponseObjectSerializable {
init?(response: HTTPURLResponse, representation: AnyObject)
}
但是,我收到了这个错误:
无法将 '(DataResponse) -> ()' 类型的值转换为预期值 参数类型 '(DataResponse<_>) -> Void'
我该如何解决?
【问题讨论】:
-
你解决这个问题了吗?
-
@Nizzam 是的,使用本机实现也更容易阅读 Sandeep 答案
-
为什么我的 alamofire 没有 responseObject ?