使用SwiftyJSON参数的Alamofire请求

时间:2017-07-11 16:18:17

标签: ios swift alamofire swifty-json

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

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

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

...但如果我尝试启动请求,则会触发异常:

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

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

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

您可以将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 
}

答案 1 :(得分:0)

我自己找到了解决方案:

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

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

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

    return dict
}

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