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
协议组合(实现),并可用于提供自动的、类型安全的响应对象序列化。