Swift类不会在其属性之一中保留值

问题描述

我有多个“产品”类别的项目。我正在根据id和variantId比较产品。

class Product: Equatable {
    let id: Int
    let name: String
    var variationId: Int
    var quantity: Int
    
    init(id: Int,name: String,variationId: Int,quantity: Int) {
        self.id = id
        self.name = name
        self.variationId = variationId
        self.quantity = quantity
    }
    
    static func == (lhs: Product,rhs: Product) -> Bool {
        return
            lhs.id == rhs.id && lhs.variationId == rhs.variationId
    }
}

在产品视图控制器中,我有一个结构Variationoption和一个变量product,如下所示。

struct Variationoption {
    var id: Int
    var name: String
    var option: String
}

var product: Product!

用户更改颜色选项时,它会更改该产品的variantId属性

self.product.variationId = variationoption.id

用户可以为产品选择其他颜色,并以此来更改variantId。将产品添加到购物车时,addItemToCart函数将检查购物车中是否存在该产品。如果存在该产品,则该产品ID的数量会更改,否则该产品将被添加到购物车中。

要做的是比较版本ID,如果不同,也将产品添加到购物车中。

我遇到的问题是这个。用户选择一个选项,变体ID会更改,产品已添加到购物车中,但不是添加新产品,而是将变体ID更改为购物车产品数组中已有的产品。

如何确定购物车中产品数组内的产品不会更改版本ID属性

func addItemToCart(product: Product) {
    if let cartItemIndex = cartItems.firstIndex(of: product) {
        cartItems[cartItemIndex].quantity += product.quantity
    } else {
        cartItems.append(product)
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)