从Swift中的非静态方法访问静态变量

时间:2015-07-01 17:36:23

标签: ios xcode swift static

我知道你无法从静态上下文中访问非静态类变量,但另一种方法呢?我有以下代码:

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return myArr
    }

但是,当我尝试编译时,我收到错误MyClass does not have a member named myArr。我认为静态变量对于静态和非静态方法都是可见的,所以我不知道我哪里出错了。

我正在使用Xcode 6.3运行OS X Yosemite的Macbook上。

4 个答案:

答案 0 :(得分:5)

您需要在变量之前包含类名。

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return MyClass.myArr
    }
}

答案 1 :(得分:4)

在Swift3中,不推荐使用dynamicType。您可以使用type(of :)

struct SomeData {
  static let name = "TEST"
}

let data = SomeData()
let name = type(of:data).name
// it will print TEST

答案 2 :(得分:2)

您只需添加班级名称。

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return MyClass.myArr
    }

}

您可以通过两种不同的方式访问Array:

MyClass().getArr()

MyClass.myArr

答案 3 :(得分:2)

您还可以使用self.dynamicType

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return self.dynamicType.myArr
    }
}