2016-07-06 65 views
0

我想要一個類的實例方法來創建它自己的一個實例 並將它追加到一個數組。類創建它自己的一個實例

我嘗試這樣做:

var vampireArray: [Vampire] = [] 

class Vampire { 

    func createSelf() { 

     vampireArray.append(Vampire()) 

    } 

} 

但我得到一個奇怪的錯誤控制檯上像(lldb)

任何想法,爲什麼?

+1

向我們顯示您的錯誤消息 - 此代碼在Playground中工作,所以您的問題在別處。你也應該解釋你實際想要達到的*,我們可能會建議其他解決方案,而不是你目前的嘗試。 – Moritz

回答

4

即使不知道該代碼的上下文,一般來說,創建一個類的實例並將其追加到類的範圍之外的數組是不好的。

請改爲將vampireArray.append(Vampire())這一行放在您原本計劃投入的位置createSelf()

如果你想堅持這條路線,它會像createSelf()應該是一個靜態方法和var vampireArray: [Vampire] = []也應該是一個靜態變量類的方法。

編輯:

如果你想要做的就是跟蹤吸血鬼的數量,這可能是一個很好的解決方案:

class Vampire { 
    static var VampireCount = 0 

    init(){ 
     Vampire.VampireCount += 1 
    } 
} 

然後,每當你想訪問計數,只需使用Vampire.VampireCount

+0

這個想法是,當一個吸血鬼對象createSelf另一個吸血鬼對象被創建。陣列只是保持吸血鬼的數量。 –

+0

@ManosSerifios然而,創建另一個吸血鬼對象是初始化程序的工作。你用'吸血鬼()'來做到這一點。如果你想用你新創造的吸血鬼做些什麼,你應該在你吸血鬼陣列的範圍內做。如果數組完全保持計數,那麼也許應該將其更改爲整數。 – TheBrownCoder

+0

@ManosSerifios我編輯了我的答案,提出了一個可能的解決方案 – TheBrownCoder

相關問題