新数组本身设置了调用append()
在Xcode 7.3.1中,我得到了这些结果:
import Foundation
var data = [[10]]
var firstObject = data[0]
print(unsafeAddressOf(firstObject))
firstObject.append(30)
print(unsafeAddressOf(firstObject))
print("--------")
print(firstObject)
print(data)
print("--------")
data[0] = firstObject
print(data)
--output:--
0x000000015fdea8a0
0x000000015fdea930
--------
[10, 30]
[[10]]
--------
[[10, 30]]
我尝试在数组中更改对象,但是我失败了。
所以,我需要每次都在data[0] = firstObject
运行array.append()
吗?
答案 0 :(得分:1)
使用您的代码,是的,您需要。
Swift Array
是值类型,不同于作为引用类型的Foundation NSArray
。
该行
var firstObject = data[0]
在data
的索引0处创建对象的副本,并将其分配给变量。
下一行
firstObject.append(30)
将{30}附加到firstObject
,但data
保持不变。
要更新data
,您需要将firstObject
分配回data
的索引0