带有 SwiftyJSON 参数的 Alamofire 请求

Alamofire request with SwiftyJSON parameters

我想知道如何将 SwiftyJSON 数组放入 Alamofire 请求的参数中。

实际上我使用这段代码 (Swift 3) 来设置请求的参数:

let params = ["customObjects": customObjects.map({[=10=].toJSON()})]

...但是如果我尝试启动请求,这会引发异常:

uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)'

"customObjects" 是我的自定义模型 class 的数组。

如果您需要更多信息,请告诉我。

我自己找到了解决方案:

let params = ["customObjects": customObjects.map({[=10=].toDictionary()})]

这里是我的 CustomObject 中的 toDictionary() 函数:

func toDictionary() -> [String: Any] {
    let dict: [String: Any] = [
        "exampleKey": "exampleValue",
        "exampleKey2": "exampleValue2"
    ]

    return dict
}

我想这是因为您可以使用 encoding: JSONEncoding.default.

设置 Alamofire

您可以将 SwiftyJSON 对象(此处称为 yourJSON)转换为如下参数:

let parameters : Parameters = yourJSON.dictionaryObject ?? [:]

然后你可以像这样在 Alamofire 请求中使用它:

Alamofire.request("https://yourURL.com/somePath", method: .post, parameters: parameters, encoding:  JSONEncoding.default, headers: nil).responseJSON { response in
   // ... do whatever you would like with the response 
}