我正在开发一款送货应用程序但是,我的购物车遇到了一些麻烦。问题是:每当客户向购物车添加新商品时,购物车中的所有商品都会使用最新商品的名称。它只会覆盖tableView对象并且不会影响我的后端,所以我知道我导入了一些错误。
对于Clarity,我有两个表:我通过JSON引入的产品和产品尺寸:
产品档案:
import Foundation
import SwiftyJSON
class Product {
//This pulls the information per product. Edit information here and attach to each Restaurant cell.
var id: Int?
var name: String?
var short_description: String?
var image: String?
var type: String?
var size: String?
init(json: JSON) {
self.id = json["id"].int
self.name = json["name"].string
self.short_description = json["short_description"].string
self.image = json["image"].string
self.type = json["course"].string
}
}
产品尺寸:
import Foundation
import SwiftyJSON
class ProductSize {
//Label for product information
var price:Float?
var sizeId: Int?
var size: Int?
var product_id: Int?
init(json: JSON) {
self.price = json["price"].float
self.sizeId = json["id"].int
self.size = json["size"].int
self.product_id = json["product_id"].int
}
膳食从上一个视图控制器传递给我们:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "cartInfo" {
let controller = segue.destination as! CartController
controller.product = product
}
}
在购物车控制器中,我显示了购物车中的所有餐点,但它只会反复出现同一餐。
var product: Product?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "shoppingCartCell", for: indexPath) as! CartCell
let cart = Cart.currentCart.items[indexPath.row]
let pname = product?.name
cell.lblQty.text = "\(cart.qty)"
cell.lblTotal.text = "$\(cart.productSize.price! * Float(cart.qty))"
cell.lblName.text = pname
return cell
在页面上,输出如下所示:
现在,如果您点了一个汉堡包,然后将芝士汉堡放入您的购物车中,那就会订购两个芝士汉堡。我该怎么做才能显示购物车中所有商品的正确信息?
这是填充所有内容的Tableview:
//Populate products in cart.
extension CartController: UITabBarDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Cart.currentCart.items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "shoppingCartCell", for: indexPath) as! CartCell
let cart = Cart.currentCart.items[indexPath.row]
let pname = self.product
cell.lblQty.text = "\(cart.qty)"
cell.lblTotal.text = "$\(cart.productSize.price! * Float(cart.qty))"
cell.lblName.text = pname?.name
return cell
}
}
答案 0 :(得分:0)
重复产品名称只意味着一件事://text()[normalize-space() = 'C1102W']/..
不是一系列产品,而是一种产品,因此product
会一直显示出来。显然,您要在product?.name
类中设置product
变量,而应该使Cart
成为一个数组,然后从前一个视图控制器追加到它。
整个结构令人困惑,也许你会在product
cart
与product
混淆