2017-03-10 9 views
0

こんにちは、私は配列にある "アドオン"と呼ばれるパラメータをalamofireにしようとしています...配列は、3またはXの項目を含むことができます。広告辞書にFORサイクルを使用して別の1セットのアイテムにしようとしていますが、それは最後のものを示しています...それは前のものを上書きするようです。私は知っているすべてを試みた...でもSwiftyJSONフレームワークを使用しようとする....しかし、alamofireは純粋な辞書型を取る。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 
    } 
    ] 
} 

答えて

0

のようなものを必要とするあなたの問題は、ループ内で使用すると、単一の結果を変数ごとに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 
+1

はどうもありがとうございました!私も辞書で配列を使って何かしようとしていましたが、構文が良くないのでコレクションを追加できませんでした。とにかく、大きな頭痛から私を救った。 ;-) –