swift - 单击按钮时如何增加和减少值?
问题描述
我正在尝试单击增加和减少按钮并更改我的值,但我单击增加按钮而不是增加我的值,但我单击减少按钮但我的值不在 api 响应中。
这是我的代码:
func dataMyCartListAPI() {
let id = UserInfo.loggedInUserId
print(id ?? "")
let param: [String: Any] = ["user_id": id ?? "", "token":UserInfo.loggedInUser?.accessToken ?? ""]
print(param)
if self.pageNo == 0 {
commonClass.sharedInstance.startLoading()
}
webserviceClass.sharedInstance.restShopServiceHandler(methodType: 1, urlString: kShopGetViewCartUrl, parameters: param as [String : AnyObject]) { (success, response) in
commonClass.sharedInstance.stopLoading()
let status = response["status"] as? Int
if status == 0 {
commonClass.sharedInstance.showErrorMessage("You have no order data")
}else{
commonClass.sharedInstance.showSuccessMessage( "You have order data")
}
guard let dataArray = response["data"] as? [[String: AnyObject]] else { return}
print(dataArray)
let data = MyCartData()
self.cartDataArray = data.getCartList(dataArray: dataArray)
for item in dataArray{
if let price = item["total_price"] as? Int{
self.totalPrice += price.toDouble
self.totalammount.text = "\( self.totalPrice)"
}
}
self.tableView.reloadData()
}
//MARK: - Increaes CART
func AddToIncreaseProduct(storeId:String,productId:Int,color:String,size:String,qty:Int) {
let saveDeviceId = UserDefaults.standard.object(forKey: "deviceId") as? String ?? ""
printD(saveDeviceId)
let id = UserInfo.loggedInUserId
print(id ?? "")
let param: [String: Any] = ["product_id": productId,"user_id": id ?? "","store_id":storeId,"color": color ,"size": size ,"device_id":saveDeviceId,"qty":qty, "token":UserInfo.loggedInUser?.accessToken ?? ""]
print(param)
if self.pageNo == 0 {
commonClass.sharedInstance.startLoading()
}
webserviceClass.sharedInstance.restShopServiceHandler(methodType: 0, urlString: kShopGetAddToCartUrl, parameters: param as [String: AnyObject]) { (success, response) in
commonClass.sharedInstance.stopLoading()
let status = response["status"] as? Int
if status == 0 {
commonClass.sharedInstance.showSuccessMessage("Sneaker already added to your cart.")
}else{
commonClass.sharedInstance.showSuccessMessage( "Product added in cart succesfully.")
}
if !success {
commonClass.sharedInstance.showErrorMessage(response["msg"] as? String ?? "Server error. Please try again later.")
return
}
self.tableView.reloadData()
}
}
//MARK: - Decrease CART
func AddToDecreaseProduct(storeId:String,productId:Int,color:String,size:String,qty:Int) {
let saveDeviceId = UserDefaults.standard.object(forKey: "deviceId") as? String ?? ""
printD(saveDeviceId)
let id = UserInfo.loggedInUserId
print(id ?? "")
let param: [String: Any] = ["product_id": productId,"user_id": id ?? "","store_id":storeId,"color": color ,"size": size ,"device_id":saveDeviceId,"qty":qty, "token":UserInfo.loggedInUser?.accessToken ?? ""]
print(param)
if self.pageNo == 0 {
commonClass.sharedInstance.startLoading()
}
webserviceClass.sharedInstance.restShopServiceHandler(methodType: 0, urlString: kShopGetAddToCartUrl, parameters: param as [String: AnyObject]) { (success, response) in
commonClass.sharedInstance.stopLoading()
let status = response["status"] as? Int
if status == 0 {
commonClass.sharedInstance.showSuccessMessage("Sneaker already added to your cart.")
}else{
commonClass.sharedInstance.showSuccessMessage( "Product added in cart succesfully.")
}
if !success {
commonClass.sharedInstance.showErrorMessage(response["msg"] as? String ?? "Server error. Please try again later.")
return
}
self.tableView.reloadData()
}
}
/// MARK: - Button Action
@IBAction func increaseButtonAction(_ sender: UIButton) {
cartDataArray[sender.tag].qty = (cartDataArray[sender.tag].qty + 1)
let indexPath = IndexPath(row: sender.tag, section: 0)
let cell = tableView.cellForRow(at: indexPath)as! MyCartCell
cell.totalCountLabel.text = "\(cartDataArray[sender.tag].qty )"
AddToIncreaseProduct(storeId: cartDataArray[sender.tag].option.storeId, productId: cartDataArray[sender.tag].product_id, color: cartDataArray[sender.tag].option.color, size: cartDataArray[sender.tag].option.size, qty: cartDataArray[sender.tag].qty)
}
@IBAction func decreaseButtonAction(_ sender: UIButton) {
cartDataArray[sender.tag].qty = (cartDataArray[sender.tag].qty - 1)
let indexPath = IndexPath(row: sender.tag, section: 0)
let cell = tableView.cellForRow(at: indexPath)as! MyCartCell
cell.totalCountLabel.text = "\(cartDataArray[sender.tag].qty )"
AddToDecreaseProduct(storeId: cartDataArray[sender.tag].option.storeId, productId: cartDataArray[sender.tag].product_id, color: cartDataArray[sender.tag].option.color, size: cartDataArray[sender.tag].option.size, qty: cartDataArray[sender.tag].qty)
}
我不明白我在代码中做错了什么。有人可以帮帮我吗?
编辑:代码已被编辑,我必须添加一些行,以便我可以将代码作为一个块发布。
解决方案
我不知道您的 webServiceClass 是什么样子,但是在您的增加和减少方法中,您都将 0 作为参数传递。方法类型参数最有可能决定是增加还是减少量?
webserviceClass.sharedInstance.restShopServiceHandler(methodType: 0, urlString: kShopGetAddToCartUrl, parameters: param as [String: AnyObject]) { (success, response) in
这可能是问题吗?请检查methodType
参数。
推荐阅读
- python - 如何在python中按值对字典进行排序
- python - 如何在python中创建一个计算多项式的程序?
- flutter - Flutter 共享首选项登录无法正常工作
- cookies - 无法在回调中获取 Set-cookie 但可以在 Scrapy shell 中获取
- swift - 如何在 Heroku vapor 应用上设置 APNS Auth 路径
- c# - 使用 Azure Key Vault 签署 CSR
- python - 将python代码内列表中的doc计数添加到elasticsearch中的字段
- node.js - axios.post() 关于循环结构的错误
- hyperledger-fabric - Hyperledger Fabric:ServerHandshake TLS 握手错误证书服务器 = PeerServer AND ServerHandshake TLS 握手 EOF
- python - 正则表达式从函数接收模式作为字符串