Создание класса для определения констант в быстром

17

Примечание. Я хочу добиться аналогичной функциональности в swift - Где хранить глобальные константы в приложении iOS ?

У меня есть два класса - MasterViewController и DetailViewController

Я хочу определить перечисление (см. ниже перечисление) и использовать его значения в обоих классах:

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

Я попытался определить его в MasterViewController и использовать его в DetailViewController следующим образом:

let aPlanet = Planet.Earth

, но компилятор жалуется :(

  

«Использование неразрешенного идентификатора Planet»

Как правило, в моем объектном c-коде у меня был файл глобальной константы, который я использовал для импорта в файл app-prefix.pch, который делал его доступным для всех файлов в моем проекте, но в этом случае я не знаю .     

задан Devarshi 08.08.2014 в 06:27
источник
  • Вы уверены, что ваш файл перечисления компилируется? Этот код работает для меня. –  drewag 08.08.2014 в 06:32
  • да .. перекрестная проверка, можете ли вы поделиться своим примером кода, может быть, я пропускаю какую-то второстепенную вещь. –  Devarshi 08.08.2014 в 06:37
  • Я буквально, но ваш первый блок кода в один файл и второй блок кода в другой файл в том же проекте, и он скомпилирован в порядке. –  drewag 08.08.2014 в 06:39
  • Является ли ваше перечисление определено в другом блоке, возможно, в классе? –  drewag 08.08.2014 в 06:40
  • gotcha .. ты поймал мою ошибку, thnx :) –  Devarshi 08.08.2014 в 06:41

2 ответа

23

Если ваше перечисление определяется в классе следующим образом:

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

Вы должны получить к нему доступ через свой класс:

var aPlanet = MyClass.Planet.Earth

Вы также хотите использовать свойство rawValue . Вам понадобится, чтобы получить доступ к фактическому значению Int:

var aPlanet = MyClass.Planet.Earth.rawValue
    
ответ дан drewag 08.08.2014 в 06:41
  • perfect .. thnx :) –  Devarshi 08.08.2014 в 06:43
  • Функция toRaw () теперь заменена свойством .rawValue в Swift 2.0. Итак, теперь вы должны написать MyClass.Planet.Earth.rawValue –  Rocket Garden 05.10.2015 в 11:54
19

В swift вы можете объявить перечисление, переменную или функцию вне любого класса или функции, и она будет доступна во всех ваших классах (в глобальном масштабе) (без необходимости импорта определенного файла).

    
ответ дан Atomix 08.08.2014 в 10:57