在下面的代码中,list1是原始数组。 当我复制list2中的list1时,它会传递" allCardList"数组作为参考,但我想创建list1的副本,所以当我在list2中更改它不应该更改原始数组(list1)
class Card {
var availableBalance = "5"
}
class DataCacheManager: NSObject {
var allCardList = [Card]()
}
var card = Card()
card.availableBalance = "10"
var list1 = DataCacheManager()
list1.allCardList.append(card)
var list2 = DataCacheManager()
for item in list1.allCardList {
list2.allCardList.append(item)
}
list2.allCardList[0].availableBalance = "20"
print(list1.allCardList[0].availableBalance) // print 20 but should return 10
你有什么帮助吗?
答案 0 :(得分:2)
class
具有引用语义。最简单的解决方案是使用值语义
struct Card ...
答案 1 :(得分:0)
答案 2 :(得分:0)
请阅读这些参考资料 How do I make a exact duplicate copy of an array? 1 和deep copy array在这种情况下,有其他方法可以在不复制整个数组的情况下满足您的要求。例如,您可以将一个只读原始值作为Card中的对象,并为新值提供另一个变量,依此类推。