我的Alamofire帖子请求如下:
Alamofire.request("http://...", method: HTTPMethod.post, parameters: parameters, encoding: JSONEncoding.default, headers: nil)
.responseJSON(completionHandler: {(response) in ... })
如果我的参数很简单,一切正常:
let parameters: Parameters = [
"firstName": "John",
"lastName": "Doe"
]
如果我的参数包含json对象,我会遇到问题。
let address: JSON = [
"street": "1234 Fake St",
"city": "Seattle",
"state": "WA"
]
let parameters: Parameters = [
"firstName": "John",
"lastName": "Doe",
"address": address
]
未执行Alamofire请求,我的应用程序崩溃。
答案 0 :(得分:2)
我认为这里的问题是Alamofire试图将参数编码为已经是json对象的json。实质上,双重编码会导致应用程序崩溃。
我找到的解决方案是在使用SwiftyJSON的.rawValue
执行请求之前解码json参数。
let parameters: Parameters = [
"firstName": "John",
"lastName": "Doe",
"address": address.rawValue
]
答案 1 :(得分:2)
对于那些不使用SwiftyJSON的用户,Parameters类型也可以接受Parameters类型,如下所示:
let address: Parameters = [
"street": "1234 Fake St",
"city": "Seattle",
"state": "WA"
]
let parameters: Parameters = [
"firstName": "John",
"lastName": "Doe",
"address": address
]