7

我一直在这里搜索很多问题,我发现一个类似标题的问题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”类型中找不到枚举“案例”

4

2 回答 2

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
}
于 2016-11-24T08:35:12.183 回答
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
    }
  }
}

建议:- 遍历枚举 - Apple 文档

于 2016-09-04T08:54:03.837 回答