我一直在这里搜索很多问题,我找到了一个类似标题Enum case switch not found in type,但没有解决方案。
我想使用带有变异的枚举来解决问题,在个别状态下,下一个交通灯的颜色是什么。
enum TrafficLights {
mutating func next() {
switch self {
case .red:
self = .green
case .orange:
self = .red
case .green:
self = .orange
case .none:
self = .orange
}
}
}
我已将所有案例作为可能的选项,但仍然会返回错误:
在“TrafficLights”类型中找不到枚举“案例”
答案 0 :(得分:11)
将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
}
答案 1 :(得分:4)
必须在函数之外声明案例:
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
}
}
}