19

Note: I want to achieve similar functionality in swift - Where to store global constants in an iOS application?

I have two classes - MasterViewController and DetailViewController

I want to define an enum (refer below enum) and use its values in both classes:

enum Planet: Int {
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

I tried to define it in MasterViewController and use it in DetailViewController like this:

let aPlanet = Planet.Earth

but compiler is complaining :(

"Use of unresolved identifier Planet"

Generally in my objective c code I used to have a global constant file, which I used to import in app-prefix.pch file, which was making it accessible to all files within my project, but in this case I am clueless.

Community
  • 1
  • 1
Devarshi
  • 16,440
  • 13
  • 72
  • 125

2 Answers2

29

If your enum is being defined in a class like this:

class MyClass {
    enum Planet: Int {
        // ...
    }
}

You have to access it through your class:

var aPlanet = MyClass.Planet.Earth

You also want to use the rawValue property. You will need that to access the actual Int value:

var aPlanet = MyClass.Planet.Earth.rawValue
drewag
  • 93,393
  • 28
  • 139
  • 128
  • The function toRaw() has now been replaced by a property .rawValue in Swift 2.0. So you would write MyClass.Planet.Earth.rawValue now – Rocket Garden Oct 05 '15 at 09:54
22

In swift you can declare an enum, variable or function outside of any class or function and it will be available in all your classes (globally)(without the need to import a specific file).

Atomix
  • 13,427
  • 9
  • 38
  • 46