我知道你无法从静态上下文中访问非静态类变量,但另一种方法呢?我有以下代码:
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上。
答案 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
}
}