2015-05-05 183 views
2

我是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...... 

有谁知道如何解决这个问题?几乎看起来有点像一个错误。

回答

3

count:repeatedValue:初始值设定项在数组的每个位置安装完全相同的对象。

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

所以使用一个循环来初始化您的数组:

var array = [myClass]() 

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

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

+0

哦,是的。忘了那一点。 –

相关问题