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

Adr*_*n M 5 xcode static ios swift

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

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return myArr
    }
Run Code Online (Sandbox Code Playgroud)

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

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

vil*_*393 5

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

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return MyClass.myArr
    }
}
Run Code Online (Sandbox Code Playgroud)


Bur*_*rtK 5

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

struct SomeData {
  static let name = "TEST"
}

let data = SomeData()
let name = type(of:data).name
// it will print TEST
Run Code Online (Sandbox Code Playgroud)