繁体   English   中英

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

[英]Access static variable from non static method in Swift

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

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上。

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

class MyClass {

    static var myArr = [String]()

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

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

struct SomeData {
  static let name = "TEST"
}

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

您只需要添加类名。

class MyClass {

    static var myArr = [String]()

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

}

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

MyClass().getArr()

要么

MyClass.myArr

您还可以使用self.dynamicType

class MyClass {

    static var myArr = [String]()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM