i am 3 foot 3
i am 3 foot 3

Reputation: 3

Alamofire multi parameters dictionary

Hi i am trying to give to alamofire parameters called "addons" that are in array...array can contain 3 or X items. I am trying to use FOR cycle to ad dictionary to another another one set of items, but...it only shows the last one...that seems it override the previous one. I tried everything I know...Even try to use SwiftyJSON framework....but alamofire only take pure dictionary type.

    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
    }

well I need something like this

{
  "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
    }
  ]
}

Upvotes: 0

Views: 654

Answers (1)

Grzegorz Krukowski
Grzegorz Krukowski

Reputation: 19802

Your problem is that in loop you are overwriting variable every single iteration with single result. That's why only last one is left for you. What you should do is:

//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

Upvotes: 2

Related Questions