Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对象数组包含对象内部的所有相同值_Ios_Arrays_Swift - Fatal编程技术网

Ios 对象数组包含对象内部的所有相同值

Ios 对象数组包含对象内部的所有相同值,ios,arrays,swift,Ios,Arrays,Swift,我是Swift新手,在使用对象数组时遇到了问题 class myClass { var test: Int? static func testFunc() { var array = [myClass] (count: 30, repeatedValue: myClass()) for i in 0...20 { array[i].test = i*2 } for a in 0...20

我是Swift新手,在使用对象数组时遇到了问题

class myClass {
    var test: Int?

    static func testFunc() {
        var array = [myClass] (count: 30, repeatedValue: myClass())
        for i in 0...20 {
            array[i].test = i*2
        }

        for a in 0...20 {
            println(array[a].test)
        }
    }
}
我真的不知道这里会出什么问题,但我的结果总是40,而不是0到40:

Optional(40)
Optional(40)
Optional(40)
etc......

有人知道如何解决这个问题吗?几乎有点像一个bug。

count:repeatedValue:initializer在数组的每个位置安装完全相同的对象

因此,当您将数组[0].test更改为某个值时,您正在更改存储在单个myClass实例中的值,该实例在数组的所有索引中共享。查看索引19,您会看到相同的myClass对象,其值已更改

因此,请使用循环来初始化阵列:

var array = [myClass]()

for (i in 1...20)
{
  let anItem = myClass()
  anItem.test = i
   array.append(anItem)
}

谢谢,这解决了我的问题。但是它必须是第一行的'var array=[myClass]()')。哦,是的。忘了那一点。