Alamofire:创建字典数组
Posted
技术标签:
【中文标题】Alamofire:创建字典数组【英文标题】:Alamofire: Create array of dictionaries 【发布时间】:2015-11-19 14:19:35 【问题描述】:需要发送到服务器的JSON是这样的:
[
"value": "0",
"optionId": "de07a0ae-9b85-4f2a-bd8f-28f0ccb55f81"
,
"value": "1",
"optionId": "abe075ef-d76e-45e0-ace9-e73218604b87"
,
"value": "0",
"optionId": "820124a6-a6ed-499e-8d0d-7ac04160f56d"
,
"value": "0",
"optionId": "0d8cb27a-2659-4e54-a4f0-0b0a10131da5"
]
所以我创建了一个字典数组:
var parameters = [[String:NSObject]]()
但 Alamofire 只接受字典。有没有办法自己进行 JSON 编码并将其作为参数传递给 Alamofire?或者你会怎么解决?
无法将 '[[String : NSObject]]' 类型的值转换为预期值 参数类型 '[String : AnyObject]?'
【问题讨论】:
【参考方案1】:您应该能够通过将数组序列化为 json 来像这样发送它。
var parameters = [[String:AnyObject]]()
if let url = NSURL(string:urlString)
let request = NSMutableURLRequest(URL: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])
Alamofire.request(request)
.responseJSON response in
switch response.result
case .Success(let responseObject):
print(responseObject)
case .Failure(let error):
print(error)
【讨论】:
使用 Alamofire 4.x,NSMutableURLRequest 无法转换为 URLRequestConvertible。根据文档github.com/Alamofire/Alamofire#urlrequestconvertible,“request”变量应该是 URLRequest 类型。有了这个小小的改动,这个解决方案就很有效。以上是关于Alamofire:创建字典数组的主要内容,如果未能解决你的问题,请参考以下文章