2016-07-06 148 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

相关问题