Serialization 阿拉莫菲尔可解码序列化程序
我正在尝试更新Alamofire自定义响应序列化程序的一些代码,我在“bits of cocoa”中找到了这段代码Serialization 阿拉莫菲尔可解码序列化程序,serialization,alamofire,Serialization,Alamofire,我正在尝试更新Alamofire自定义响应序列化程序的一些代码,我在“bits of cocoa”中找到了这段代码 根据最后的评论:Response和ResponseSerializer现在还没有解决,这在昨天的工作中没有错误。但是,今天早上更新xcode和alamofire时出现了这样的错误 嗯。我发现了这个,所以这应该可以修复错误,因为我发现了这个,我认为这可以修复它。我会知道什么时候我可以测试这个,就像一个笔记。最后一个代码确实有效:)更新到新的xcode 8 GM和最新的Alamofir
根据最后的评论:Response和ResponseSerializer现在还没有解决,这在昨天的工作中没有错误。但是,今天早上更新xcode和alamofire时出现了这样的错误 嗯。我发现了这个,所以这应该可以修复错误,因为我发现了这个,我认为这可以修复它。我会知道什么时候我可以测试这个,就像一个笔记。最后一个代码确实有效:)更新到新的xcode 8 GM和最新的Alamofire代码,我在
Response
上收到错误,说它现在未声明,ResponseSerializer
也未解决。所以我需要再次修复这个问题。我会发布一个最终答案,如果有人能更快地发布,我会发布:)好的。我发现了这个,所以这应该可以修复错误,因为我发现了这个,我认为这可以修复它。我会知道什么时候我可以测试这个,就像一个笔记。最后一个代码确实有效:)更新到新的xcode 8 GM和最新的Alamofire代码,我在Response
上收到错误,说它现在未声明,ResponseSerializer
也未解决。因此,我需要再次修复此问题。我将发布此问题的最终答案,但有些人可以更快地发布:)
extension Alamofire.Request {
public func responseCollection<T: Decodable>(completionHandler: Response<[T], NSError> -> Void) -> Self {
let responseSerializer = ResponseSerializer<[T], NSError> { request, response, data, error in
guard error == nil else { return .Failure(error!) }
let result = Alamofire
.Request
.JSONResponseSerializer(options: .AllowFragments)
.serializeResponse(request, response, data, error)
switch result {
case .Success(let value):
do {
return .Success(try [T].decode(value))
} catch {
return .Failure(Error.errorWithCode(.JSONSerializationFailed,
failureReason: "JSON parsing error, JSON: \(value)"))
}
case .Failure(let error): return.Failure(error)
}
}
return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
}
}
extension Alamofire.Request {
public func responseCollection<T: Decodable>(completionHandler: (Response<[T]>) -> Void) -> Self {
let responseSerializer = ResponseSerializer<[T]> { request, response, data, error in
guard error == nil else { return .failure(error!) }
let result = Alamofire
.Request
.JSONResponseSerializer(options: .allowFragments)
.serializeResponse(request, response, data, error)
switch result {
case .success(let value):
do {
return .success(try [T].decode(value))
} catch {
return .failure(Error(.errorWithCode(.JSONSerializationFailed, failureReason: "JSON parsing error, JSON: \(value)")))
}
case .failure(let error): return.failure(error)
}
}
return response(responseSerializer: responseSerializer, com
pletionHandler: completionHandler)
}
}
extension Alamofire.Request {
public func responseDecodable<T: Decodable>(completionHandler: @escaping (Response<T>) -> Void) -> Self {
let responseSerializer = ResponseSerializer<T> { request, response, data, error in
guard error == nil else {
print("error Network request: \(error)")
return .failure(error!)
}
let result = Alamofire
.Request
.JSONResponseSerializer(options: .allowFragments)
.serializeResponse(request, response, data, error)
switch result {
case .success(let value):
do {
let decodableObject = try T.decode(value)
return .success(decodableObject)
} catch let decodeErr {
print(decodeErr)
let failureReason = "JSON parsing error, JSON: \(value)"
let userInfo = [NSLocalizedFailureReasonErrorKey: failureReason]
let error = NSError(domain: "com.prospects.error", code: BackendError.JSONSerializationFailed.rawValue, userInfo: userInfo)
return .failure(error)
}
case .failure(let error): return.failure(error)
}
}
return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
}
}
public protocol ResponseObjectSerializable {
init?(response: HTTPURLResponse, representation: AnyObject)
}