【发布时间】:2017-07-05 14:24:08
【问题描述】:
在下面的代码中,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
对你有帮助吗?
【问题讨论】:
-
当然它会打印 20,因为您正在更改参考对象。如果你想有不同的值,你需要深拷贝你的数组。
-
我怎样才能拥有深拷贝?