Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access static variable from non static method in Swift

I know that you cannot access a non static class variable from within a static context, but what about the other way around? I have the following code:

class MyClass {

    static var myArr = [String]()

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

However, when I try to compile this, I get the error MyClass does not have a member named myArr. I thought static variables were visible to both static and non static methods, so I don't know where I am going wrong.

I am on a Macbook running OS X Yosemite using Xcode 6.3.

like image 586
Adrian M Avatar asked Jul 01 '15 17:07

Adrian M


2 Answers

In Swift3, dynamicType is deprecated. You can use type(of: )

struct SomeData {
  static let name = "TEST"
}

let data = SomeData()
let name = type(of:data).name
// it will print TEST
like image 139
BurtK Avatar answered Sep 30 '22 19:09

BurtK


You need to include the class name before the variable.

class MyClass {

    static var myArr = [String]()

    func getArr() -> [String] {
        return MyClass.myArr
    }
}
like image 40
villy393 Avatar answered Sep 30 '22 18:09

villy393