数组可变性附加在Swift中

时间:2016-08-09 08:54:18

标签: arrays swift append

新数组本身设置了调用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()吗?

1 个答案:

答案 0 :(得分:1)

使用您的代码,是的,您需要。

Swift Array是值类型,不同于作为引用类型的Foundation NSArray

该行

var firstObject = data[0]

data的索引0处创建对象的副本,并将其分配给变量。

下一行

firstObject.append(30)

将{30}附加到firstObject,但data保持不变。

要更新data,您需要将firstObject分配回data的索引0