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
}