gpt4 book ai didi

swift - 附加和引用问题

转载 作者:行者123 更新时间:2023-11-28 15:58:20 25 4
gpt4 key购买 nike

您好,我对以下两行代码有疑问。我试图将项目数组中的项目插入结帐数组并将其库存设置为 1。但是,它还将项目数组的库存设置为 1。谁能解释一下为什么?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let item = items[indexPath.item]
//inventoryController?.showItemDetailForItem(item: item, index: indexPath.item)
if item.stock != 0 {
total += item.price //adding each item to cart adds its price to the checkout price
for x in checkout {
if item.name == x.name{
print("before stock is \(item.stock)")
x.stock += 1
print("after stock is \(item.stock)")
return
} else{
print("not equal")
}
}
checkout.insert(item, at: 0) // THIS IS WHERE THE ISSUE IS
checkout[0].stock = 1 //THIS IS WHERE THE ISSUE IS
} else{
print("Not enough stockempty")
}
print("stock is \(item.stock)")
collectionView.reloadData()
}

最佳答案

item 显然是一个。类是一个引用类型

当您要将引用类型对象附加到集合类型时,只会分配一个指针,并且原始对象的引用计数器会递增。

因此更改属性的值会影响该项目的所有出现。

要防止此行为,请使用值类型(结构)或制作对象的副本

关于swift - 附加和引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41423514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com