2015-05-05 181 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

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

相關問題