/ / Diccionario de parámetros múltiples de Alamofire - swift, dictionary, swift3, alamofire

Diccionario de parámetros múltiples de Alamofire - swift, dictionary, swift3, alamofire

Hola, estoy tratando de dar a los parámetros de alamofirellamados "complementos" que están en la matriz ... la matriz puede contener 3 o X elementos. Estoy tratando de usar el ciclo FOR para publicar un diccionario en otro conjunto de elementos, pero ... solo muestra el último ... que parece anular el anterior. Intenté todo lo que sé ... Incluso trato de usar el marco SwiftyJSON ... pero alamofire solo toma el tipo de diccionario puro.

    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
}

bueno necesito algo como esto

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

Respuestas

1 para la respuesta № 1

Su problema es que en el bucle está sobrescribiendo la variable en cada iteración con un solo resultado. Por eso solo te queda el último. Lo que debes hacer es:

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