Alamofire 多参数字典

Posted

技术标签:

【中文标题】Alamofire 多参数字典【英文标题】:Alamofire multi parameters dictionary 【发布时间】:2017-03-10 22:05:00 【问题描述】:

您好,我正在尝试将数组中称为“插件”的 alamofire 参数提供给...数组可以包含 3 个或 X 个项目。我正在尝试使用 FOR 循环将字典广告到另一组项目,但是......它只显示最后一个......似乎它覆盖了前一个。我尝试了我所知道的一切……甚至尝试使用 SwiftyJSON 框架……但是 alamofire 只采用纯字典类型。

    let itemsArr = ["Skirts", "Coat", "Shirt"]
    let priceArr = ["7.00", "7.00", "2.90"]
    let quantityArr = ["2", "5", "1"]

    let personalInfo: [String : Any] = [
        "phone" : phone,
        "notes" : descNote
    ]

    var para: [String: Any] = [
        "pieces" : pieces,
        "personal_info" : personalInfo,
        "payment_method" : paymentMethod
    ]

    for i in 0..<itemsArr.count 
        let addons: [String: Any] = [
            "name":itemsArr[i],
            "price":priceArr[i],
            "quantity":quantityArr[i]
        ]
        print(addons)
        para["addons"] = addons
    

我需要这样的东西


  "pieces": 12,
  "personal_info": 
    "phone": "+420783199102",
    "notes": "Plz be fast, I need to play Game of War"
  ,
  "payment_method": "cod",
  "addons": [
    
      "name": "Select day Tue",
      "price": 3.5,
      "quantity": 1
    ,
    
      "name": "Select day Thu",
      "price": 3.5,
      "quantity": 1
    
  ]

【问题讨论】:

【参考方案1】:

您的问题是,在循环中,您每次迭代都会用单个结果覆盖变量。这就是为什么只剩下最后一个给你的原因。 你应该做的是:

//create an array to store the addons outside of the loop
var addons: [[String: Any]] = []
for i in 0..<itemsArr.count 
    let addon: [String: Any] = [
        "name":itemsArr[i],
        "price":priceArr[i],
        "quantity":quantityArr[i]
    ]
    //append a single addon to our array prepared before the loop
    addons.append(addon)

//once we gathered all addons, append results to `para` dictionary
para["addons"] = addons

【讨论】:

非常感谢!我也在尝试使用数组中的字典,但语法不好,所以我无法追加集合。无论如何,你让我免于头疼。 ;-)

以上是关于Alamofire 多参数字典的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Alamofire,swift 3 中将字典作为参数发送

Alamofire 5 任何字典

如何在多部分 API 中发送 [String:Any] 字典?

如何在 Alamofire Swift 中发送带有数组的字典

使用 Alamofire 解析字典中的 json 对象 [关闭]

将字典值作为空值传递给 alamofire 服务 ios swift