Swift: регистр Enum не найден в типе

Я искал много вопросов здесь, я нашел один с похожим названием Enum case case, не найденный в типе, но не нашел для меня решения.

Я бы хотел использовать enum с мутацией для решения вопроса о том, какой будет следующий цвет светофора в отдельных штатах.

enum TrafficLights {
    mutating func next() {
        switch self {
        case .red:
            self = .green
        case .orange:
            self = .red
        case .green:
            self = .orange
        case .none:
            self = .orange
        }
    }
}

Я поместил все случаи как возможные варианты, и это все еще возвращает ошибку:

Enum 'case' не найден в типе 'TrafficLights'

2 ответа

Решение

Случаи должны быть объявлены вне функции:

enum TrafficLights {

case green
case red
case orange
case none

mutating func next() {
    switch self {
    case .red:
        self = .green
    case .orange:
        self = .red
    case .green:
        self = .orange
    case .none:
        self = .orange
    }
  }
}

Рекомендуется:- пройти перечисление - документация Apple

У меня возникла проблема с той же ошибкой при преобразовании Int в пользовательское перечисление:

switch MyEnum(rawValue: 42) {
case .error:
    // Enum case `.error` not found in type 'MyEnum?'
    break
default:
    break
}

Проблема в том, что MyEnum(rawValue: 42) возвращает необязательный. Разверните его или укажите необязательный параметр, чтобы разрешить включение перечисления:

switch MyEnum(rawValue: 42) ?? MyEnum.yourEnumDefaultCase {
case .error:
    // no error!
    break
default:
    break
}
Другие вопросы по тегам