0

我有一个带有图像的集合视图。每个集合视图项都有图像和与它们相关联的其他数据,例如“grand_total”、“product_id”等。现在每个集合视图项都有一个按钮,当我单击它时,应该存储与之关联的值,例如 grand_total 等在字典数组中。

当我点击另一个集合视图项时,与之相关的值也将存储在字典数组中。因此,最终如果我点击了 2 个集合视图项,则与这 2 个集合视图项相关的所有值都将存储在一个字典数组中,就像这样......

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

有人建议我使用它,但是在我无法弄清楚的这种情况下,我didSet将如何使用它。didSet我对事情不太熟练,因此提出了这个问题......:)

最后,当我发出 API 请求时,字典数组中的所有值都将作为参数传递,如下所示......

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!”) }}

在该parameters部分中,参数order_data具有值allMyDataallMyData应包含[{"remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id":"4"}]

4

2 回答 2

0

“didSet”可以帮助您,以防您想对数组 allMyData 的更改做出反应。您需要以某种方式向数组添加数据,例如 {"remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id":"4"}:

@IBAction func addInfoAction(_ sender: NSButton) {

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

为避免数组 allMyData 中的双精度,请考虑向订单字典添加一些唯一属性。喜欢:

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

在这种情况下,您将能够检查是否有您要添加到数组中的订单的信息。然后决定只是添加信息或更新。

将您的属性 allMyData 组织为字典字典可能会更好 [String: [String: Any]] 在这种情况下,如果您有订单 ID,您只需使用订单 ID 将订单字典放入 allMyData

allMyData[orderID] = ["orderID":12345, "remaining_balance":"0.0", "shipping_charges":0, "grand_total":320, "product_id":"4"]
于 2017-11-06T06:07:56.540 回答
0

假设您正在使用结构或类在 collectionview 中显示数据。我猜你的对象结构应该是这样的:

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

再次假设,您维护了一个对象数组,这些对象在数组中被单击,如下所示:

var clickedProducs:[Product] = []

现在,当您准备好调用您的 API 时,您可以获得如下字典数组:

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

我认为你didSet根本不需要。

于 2017-11-06T06:02:39.003 回答