在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