Swift-初始化时自动将类实例添加到数组

时间:2018-09-13 02:47:53

标签: swift xcode

我的代码通过以下方式设置:

class MyClass {

    let text: String

    init(text: String) {
        self.text = text
    }  

}

var items = [MyClass]()

let item = MyClass(text: "sometext")

想法是将项目放入项目数组中,例如:

items.append(item)

这的主要问题是我将这些项目初始化到一个快速文件中,并且会收到错误消息 不允许在顶层表达 另外,我最好不要在诸如viewDidLoad()之类的地方使用它,因为可能有太多的MyClass项。

我已经尝试过了

class MyClass {

    let text: String

    static var items = [MyClass]()

    init(text: String) {
        self.text = text
        MyClass.items.append(self)
    }  

}

根据建议here

但是,在初始化几个 MyClass 对象之后,仍然为空。

有什么办法可以做到这一点?

编辑:谢谢您到目前为止的建议。这些是拼写错误(使用 item 而不是 self ,以及 items ,而不是 MyClass.items 。)我在代码中使用了它,但可编译,可惜仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

您的代码无法编译。这是该类的无错误代码。

class MyClass {

    let text: String

    static var items = [MyClass]()

    init(text: String) {
        self.text = text
        MyClass.items.append(self)
    }

}

代码中有两件事是错误的。

  • 您应该将self附加到items,因为self是您创建的Item的实例,可以在init中使用。
  • 静态方法应使用其类名称进行访问。

示例:

let blah = MyClass(text: "blah")
let bleh = MyClass(text: "bleh")

print(MyClass.items.count) // Prints 2