Swift2 无法专门化非泛型类型ResponseSerializer
从和中,我尝试使用Swift2 无法专门化非泛型类型ResponseSerializer,swift2,alamofire,Swift2,Alamofire,从和中,我尝试使用响应序列化,但出现以下错误。我似乎无法解决这些问题。我在ResponseCollectionSerializable中也有同样的错误 您应该使用符合响应序列化的通用响应序列化: public protocol ResponseObjectSerializable { init?(response: NSHTTPURLResponse, representation: AnyObject) } extension Request { public func re
响应序列化
,但出现以下错误。我似乎无法解决这些问题。我在ResponseCollectionSerializable
中也有同样的错误
您应该使用符合
响应序列化
的通用响应序列化
:
public protocol ResponseObjectSerializable {
init?(response: NSHTTPURLResponse, representation: AnyObject)
}
extension Request {
public func responseObject<T: ResponseObjectSerializable>(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<T>) -> Void) -> Self {
let responseSerializer = GenericResponseSerializer<T> { request, response, data in
let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
let result = JSONResponseSerializer.serializeResponse(request, response, data)
switch result {
case .Success(let value):
if let
response = response,
responseObject = T(response: response, representation: value)
{
return .Success(responseObject)
} else {
let failureReason = "JSON could not be serialized into response object: \(value)"
let error = Error.errorWithCode(.JSONSerializationFailed, failureReason: failureReason)
return .Failure(data, error)
}
case .Failure(let data, let error):
return .Failure(data, error)
}
}
return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
}
}
公共协议响应对象可序列化{
初始化?(响应:NSHTTPURLResponse,表示:AnyObject)
}
延期请求{
公共函数响应对象(completionHandler:(NSURLRequest?,NSHTTPURLResponse?,Result)->Void)->Self{
让responseSerializer=GenericResponseSerializer{请求,响应,数据输入
让JSONResponseSerializer=Request.JSONResponseSerializer(选项:.AllowFragments)
让result=JSONResponseSerializer.serializeResponse(请求、响应、数据)
切换结果{
成功案例(let value):
如果让
响应=响应,
responseObject=T(响应:响应,表示:值)
{
return.Success(responseObject)
}否则{
let failureReason=“JSON无法序列化为响应对象:\(值)”
let error=error.errorWithCode(.JSONSerializationFailed,failureReason:failureReason)
return.Failure(数据、错误)
}
案例失败(let数据,let错误):
return.Failure(数据、错误)
}
}
返回响应(responseSerializer:responseSerializer,completionHandler:completionHandler)
}
}
ResponseSerializer
是所有响应序列化程序必须遵守的协议。符合ResponseSerializer的GenericResponseSerializer是什么意思?我找到了它。您可以编辑包含此代码的答案。这是因为我使用的是3.0代码而不是2.0.2我添加了代码来回答。我的意思是,Request.response
方法接受ResponseSerializer
作为第一个参数,而GenericResponseSerializer
是Alamofire构建它的泛型类,它与ResponseSerializer
协议组合(实现),并可用于提供自动的、类型安全的响应对象序列化。