2017-11-06 8 views
0

私は画像付きのコレクションビューを持っています。それぞれのコレクションビューアイテムには、 'grand_total'、 'product_id'などのような他のデータが&に関連付けられています。ここでは、コレクションビューアイテムにはボタン&があります。それに関連するgrand_totalなどの値辞書の配列でdidSetを使用して通知する際の問題

また、別のコレクションビューアイテムをクリックすると、それに関連する値も辞書の配列に格納されます。私は2つのコレクションビュー項目をクリックしたならばそう... didSetこれを使用して

[{"remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id”:”4”}, {"remaining_balance”:”1.0”,”shipping_charges”:200, "grand_total”:456,”product_id”:”5”}] 

は私がいた実現することができるようなので、最終的には、これらの2つのコレクションビュー項目に関連するすべての値は、辞書の配列に格納されますこのシナリオではどのように私は把握することができないdidSetを使用しますか。私はそれほど熟練していないので、質問をしています。:)

最後に、私のAPIリクエストを作成すると、辞書の配列のすべての値がパラメータとして渡されます。

parametersセクションで
func APICallForDetails() { 
    let url = "http://myapp/myUrl……” 
    let headers = [ "Content-Type"... 

    let parameters = [ 
      "access_token": self.accessToken, 
      "seller_id": sellerIdvar, 
      “order_data”: allMyData 
      "user_details": myUserDetails 
     ] 
    Alamofire.request(url, method: .post, parameters: Parameters, encoding: URLEncoding.httpBody, headers: headers) 
     .responseJSON { (response) in 
      if let httpResponse = response.response { 
        if httpResponse.statusCode == 200 { 
         print(“Something went wrong”)         
         } else if result["success"] as! Int == 1 { 
          print(“SUCCESS!”) }} 

、パラメータorder_dataは値allMyDataallMyDataはあなたがcollectionview内のデータを表示するために構造体やクラスを使用していると仮定すると、[{"remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id":"4"}]

答えて

0

が含まれている必要があります。ときに、今

var clickedProducs:[Product] = [] 

:もう一度あなたは、このような配列何かでクリックますオブジェクトの配列を、維持している、と仮定し

struct Product { 
    let remainingBalance:String 
    let shippingCharges:Int 
    let grandTotal:Int 
    let productId:String 

    func toDictionary() -> [String:Any] { 
     return ["remaining_balance":remainingBalance, "shipping_charges":shippingCharges, "grand_total": grandTotal, "product_id":productId] 
    } 
} 

:私はあなたのオブジェクト構造体は次のようになります推測しますあなたは、このような辞書の配列を取得することができ、あなたのAPIを呼び出す準備ができている:

let arrayOfProductDict = clickedProducs.map({$0.toDictionary()}) 

私はあなたがすべてでdidSetが必要だと思ういけません。

+1

よろしくお願いします。お知らせします。ありがとう.. :) – bws

0

「didSet」は、配列allMyDataの変更に反応したい場合に備えて役に立ちます。避けるため

@IBAction func addInfoAction(_ sender: NSButton) { 

    allMyData.append(["remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id":"4"]) 
} 

:何とかのような配列に{ "4": "0.0"、 "shipping_charges":0、 "GRAND_TOTAL":320、 "PRODUCT_ID" "remaining_balance"}あなたは、例えば、データを追加する必要がありますあなたの配列allMyDataを2倍にして、いくつかのユニークな属性をオーダー辞書に追加することを検討してください。 ように:あなたは、配列または無に追加するためのための情報があるかどうかを確認することができるようになります。この場合

["orderID":12345, 
"remaining_balance":"0.0", 
"shipping_charges":0, 
"grand_total":320, 
"product_id":"4"] 

。そして、情報を追加するか更新するだけです。

は、辞書の辞書としてあなたの財産allMyDataを整理する方が良いかもしれ[文字列:[文字列:任意]]は、あなたが注文IDを持っている場合はその場合は、あなただけのオーダーID

allMyData[orderID] = ["orderID":12345, "remaining_balance":"0.0", "shipping_charges":0, "grand_total":320, "product_id":"4"] 
を使用してallMyDataでご注文辞書を置きます
関連する問題