【发布时间】:2017-04-16 22:14:46
【问题描述】:
因为我需要从 Array<Array<Double>> 而不是 Dictionary<String, Any> 类型创建一个 json 字符串,所以我需要自定义编码并且不能使用 alamofire 4 中的默认 json 编码。
在 alamofire 3 中我这样做了:
let marshal: (URLRequestConvertible, [String: AnyObject]?) -> (NSMutableURLRequest, NSError?) = {
(urlRequest, parameters) in
var mutableURLRequest = urlRequest as! NSMutableURLRequest
mutableURLRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
mutableURLRequest.httpBody = self.buffer.json()
return (mutableURLRequest, nil)
}
但我对 swift 3 的了解不够,无法理解我应该如何实现可以在 alamofire 4 中使用的编码协议
您能否提供一个实现 alamofire 4 编码协议的示例。
基于https://github.com/Alamofire/Alamofire#custom-encoding我试过了:
struct JSONStringArrayEncoding: ParameterEncoding {
private let buffer: Array<Array<Double>>
init(_ buffer: Array<Array<Double>>) {
self.buffer = buffer
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = try urlRequest.asURLRequest()
urlRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = self.buffer.json()
return urlRequest
}
}
encoding:JSONStringArrayEncoding(self.buffer) 编译但似乎不起作用。
编辑:没关系它的工作原理:) 做了一些与此无关的愚蠢行为,我将把它留在这里帮助其他人。如果您有比上述更好的解决方案,请随时回答。
【问题讨论】: