如何检查实例是否为enum类型

时间:2016-03-02 00:31:10

标签: swift

'emun'在我看来像关键字或原始类型。 显然,下面的代码无法编译:

if self is enum {

}

但是我怎样才能检查某个enum是否实现了某些协议?

protocol Enumatable {

} 

extension Enumatable {
    func isEnum() -> Bool {
        return self is enum //it does not compile
    }
}

但我真正想要的是在协议中设置某种约束来强制采用类作为枚举。这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定使用Mirrors的效果如何。但是你走了:

    enum SomeEnum {
        case one
        case two
    }

    let mirror = Mirror(reflecting: SomeEnum.one)
    if let displayStyle = mirror.displayStyle {
        switch displayStyle {
        case .enum:
            print("I am an enum")
        default:
            print("not an enum")
        }
    }