Swift:在类型中找不到枚举大小写

Swift : Enum case not found in type

我在这里搜索了很多问题,我找到了一个标题相似的问题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
        }
    }
}

我已经将所有情况都作为可能的选项,但它仍然返回错误:

Enum 'case' not found in type 'TrafficLights'

案例必须在函数外声明:

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
    }
  }
}

建议:- 通过 Enumeration - Apple Documentation

我在将 Int 转换为自定义枚举时遇到了同样的错误:

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

问题是 MyEnum(rawValue: 42) returns 是可选的。打开它或提供一个非可选的以允许打开枚举:

switch MyEnum(rawValue: 42) ?? MyEnum.yourEnumDefaultCase {
case .error:
    // no error!
    break
default:
    break
}