我有一个带图像的集合视图。每个集合视图项都有图像&与他们相关的其他数据,如'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
的值为allMyData
,allMyData
应包含[{"remaining_balance":"0.0","shipping_charges":0, "grand_total":320,"product_id":"4"}]
答案 0 :(得分: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
。
答案 1 :(得分:0)
" didSet"可以帮助你,以防万一你想要对数组allMyData的更改作出反应。您需要添加数据,例如{" remaining_balance":" 0.0"," shipping_charges":0," grand_total":320,&# 34; 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"]