在Swift中从非静态方法访问静态variables

我知道你不能从静态的上下文中访问一个非静态的类variables,但是反过来呢? 我有以下代码:

class MyClass { static var myArr = [String]() func getArr() -> [String] { return myArr } 

但是,当我尝试编译这个,我得到错误MyClass does not have a member named myArr 。 我认为静态variables对静态和非静态方法都是可见的,所以我不知道我的错在哪里。

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

您需要在variables之前包含类名称。

 class MyClass { static var myArr = [String]() func getArr() -> [String] { return MyClass.myArr } } 

你只需要添加类名称。

 class MyClass { static var myArr = [String]() func getArr() -> [String] { return MyClass.myArr } } 

你可以通过两种不同的方式访问你的数组:

 MyClass().getArr() 

要么

 MyClass.myArr 

你也可以使用self.dynamicType

 class MyClass { static var myArr = [String]() func getArr() -> [String] { return self.dynamicType.myArr } } 

在Swift3中,dynamicType已被弃用。 你可以使用type(of:)

 struct SomeData { static let name = "TEST" } let data = SomeData() let name = type(of:data).name // it will print TEST