我想知道如何将SwiftyJSON数组放入Alamofire请求的参数中。
实际上我使用此代码(Swift 3)来设置请求的参数:
let params = ["customObjects": customObjects.map({$0.toJSON()})]
...但如果我尝试启动请求,则会触发异常:
uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)'
" customObjects"是我的自定义模型类的数组。
如果您需要更多信息,请与我们联系。
答案 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。