我的Alamofire post请求如下:

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试图将一个参数编码为json,而json已经是一个json对象。实际上,双重编码会导致应用程序崩溃。
我找到的解决方案是在使用swiftyjson的.rawValue执行请求之前解码json参数。

let parameters: Parameters = [
    "firstName": "John",
    "lastName": "Doe",
    "address": address.rawValue
]

https://github.com/SwiftyJSON/SwiftyJSON#raw-object

09-30 15:04
查看更多