我如何比较哪个嵌套枚举与我的值相关联

时间:2018-02-15 16:02:09

标签: swift enums

这是我的代码

public enum Key {
   enum A: String {
        case x
   }
   enum B: String {
        case y
   }
   enum C: String {
        case z
   }
}

现在我需要比较参数所属的嵌套枚举, 这可能是这样的吗?

func readString(key: Key) {
   switch key {
      case .A:
         //do smth
      default:
         break
   }
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,特别是我的问题:

enum Key {
    case a(A)
    case b(B)
    case c(C)

    enum A: String {
        case x
    }
    enum B: String {
        case y
    }
    enum C: String {
        case z
    }
}

在此之后我们可以使用switch-case。

但最好以下列方式进行:

  1. 创建协议
  2. 订阅
  3. 在通用
  4. 中调用此方法

    像这样的东西

    protocol CKey: RawRepresentable where RawValue == String {
        var nestingEnum: String { get }
    }
    
    enum Key {
        enum A: String, CKey {
            case x
            var nestingEnum: String {
                return "X"
            }
        }
        enum B: String, CKey {
            case y
            var nestingEnum: String {
                return "Y"
            }
        }
        enum C: String, CKey {
            case z
            var nestingEnum: String {
                return "Z"
            }
        }
    }
    

    并称之为

    func read<Item: CKey>(for key: Item) -> String {
        //now we can read key.nestingEnum
    }