クラス Product のアイテムがあります。Product クラス内の変数を変更していますが、以下の addToCart メソッドは、変更が行われていないかのようにアイテムを扱います。idとvariationIdで商品を比較しています。私は何を間違っていますか?
import UIKit
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
}
}
ユーザーは製品に別の色を選択できます。選択すると、variationId が変更されます。
addItemToCart() メソッドは、cartItems 配列にこの商品が含まれているかどうかを確認します。製品が存在する場合、数量は 1 増加します。それ以外の場合、製品は配列に追加されます。
var cartItems = [Product]()
func addItemToCart(product: Product) {
if cartItems.contains(product) {
let quantity = product.quantity
product.quantity = quantity + 1
} else {
cartItems.append(product)
}
}
上記のメソッドは、variationId が異なるかどうかに関係なく、数量を更新し続けます。