【问题标题】:Alamofire: Create array of dictionariesAlamofire:创建字典数组
【发布时间】: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]?'

【问题讨论】:

    标签: swift alamofire


    【解决方案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 类型。有了这个小小的改动,这个解决方案就很有效。
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 2018-07-18
    • 2015-01-05
    • 2013-11-28
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多