swift - 如何检查实例是否为枚举类型

标签 swift

'emun' 在我看来像是一个关键字或原始类型。 显然以下代码无法编译:

if self is enum {

}

但是我怎样才能检查某个协议(protocol)是否由任何枚举实现?

protocol Enumatable {

} 

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

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

谢谢!

最佳答案

我不确定使用 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")
        }
    }

关于swift - 如何检查实例是否为枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35736317/

相关文章:

ios - 当 applicationWillResignActive 时从 AppDelegate 暂停计时器

ios - 如何在 Swift、Xcode 中动态增加图像大小?

ios - 未调用 subview 手势识别器

ios - 无法以编程方式将 UIImageView 添加为 UIView 的 subview

swift - 在 Swift 中按创建顺序解析查询

swift - 带 ibeacons 的存折(钱包)

ios - Popover 在 iPhone 上不起作用

swift - Nimble - 期望等于 <0.9602>,得到 <0.9602>

ios - 检查是否安装了推特应用程序

ios - 上面的 UITabBarItem 图像而不是文本旁边