Тип Enum: Int / Ожидаемый идентификатор после запятой в объявлении enum 'case' - PullRequest
0 голосов
/ 24 мая 2019

У меня есть модель для моего UISegmentedControl.У меня есть ошибка на моем enum, и я не знаю, что это такое.

На моем SegmentedControl я хочу иметь для: Индекс 0 = 1 (Int) Индекс 1 = 2 (Int).....

Мой код и мой Вид по ссылке.

image

Ответы [ 3 ]

1 голос
/ 24 мая 2019

Вам не нужны запятые в вашем перечислении. Если вы хотите Int enum, вы должны написать

enum MamsEntreeGout: Int {
   case firstValue           = 1
   case secondValue          = 2
   case thirdValue           = 3
   case fourthValue          = 4
 }

И то же самое для другого перечисления.

Наслаждайтесь

0 голосов
/ 24 мая 2019

Идентификаторы в перечислении не могут быть или начинаться с цифры, это должна быть буква (az, AZ), подчеркивание или несколько символов Юникода, см. https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_identifier-head

Итак

enum bad {
    case 1, 2word, 3.0
}

не допускается, но

enum good {
    case a1, _2, treedotzero
}

будет работать нормально

0 голосов
/ 24 мая 2019

В Swift вы не можете напрямую определить значение Int как enum's case, т. Е. Ниже enum недопустимо.

enum MamsEntreeGout {
    case 1
}

Вместо этого вы должны создать enum's cases с таким же syntax, как у variables, т.е.

enum MamsEntreeGout {
    case first
}

В Swift, enum's cases не имеет default values, как на других языках. Поэтому, если вы хотите связать cases с любым value, вы должны указать Raw Type, т.е.

enum MamsEntreeGout: Int {
    case first
}

В приведенном выше коде Int - это Raw Type из enum MamsEntreeGout.

Когда целые числа используются для необработанных значений, неявное значение для каждого дело на один больше, чем в предыдущем случае. Если первый случай не установить значение, его значение равно 0.

Таким образом, нет необходимости определять values для каждого case, если enum имеет Raw Type как Int.

Итак, вы можете определить свой enums как:

enum MamsEntreeGout: Int {
   case first = 1, second, third, fourth
}

, separated cases определенно разрешено в Swift.

Для доступа к значению Int любого из cases из enum используйте rawValue с case name, т.е.

MamsEntreeGout.third.rawValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...