/ / Alamofire multi parametro dizionario - swift, dizionario, swift3, alamofire

Alamofire multi-parametro dizionario - swift, dizionario, swift3, alamofire

Ciao sto cercando di dare ai parametri alamofirechiamati "addons" che sono nella matrice ... l'array può contenere 3 o X elementi. Sto provando ad usare il ciclo FOR per il dizionario degli annunci su un altro gruppo di elementi, ma ... mostra solo l'ultimo ... sembra sovrascrivere quello precedente. Ho provato tutto quello che so ... Anche provare a usare il framework SwiftyJSON .... ma alamofire prende solo il puro tipo di dizionario.

    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
}

bene, ho bisogno di qualcosa di simile

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

risposte:

1 per risposta № 1

Il tuo problema è che in loop stai sovrascrivendo ogni singola iterazione con un singolo risultato. Ecco perché solo l'ultima è rimasta per te. Quello che dovresti fare è:

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