我如何得到一个Swift枚举的数量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

我如何确定Swift枚举中的个案数量?

(我想避免手动枚举所有的值,或者如果可能,使用旧的“ enum_count技巧 ”。)

提问于
用户回答回答于

我不知道有什么通用的方法来计算枚举的数量。但是我注意到hashValue属性是增量式的,从零开始,顺序由案例声明的顺序决定。所以,最后一个枚举加一个的散列对应于案例的数量。

例如,使用这个枚举:

enum Test {
    case ONE
    case TWO
    case THREE
    case FOUR

    static var count: Int { return Test.FOUR.hashValue + 1}
}

count返回4。

用户回答回答于

只要枚举的原始类型是整数,就可以这样添加计数:

enum Reindeer: Int {
    case Dasher, Dancer, Prancer, Vixen, Comet, Cupid, Donner, Blitzen
    case Rudolph

    static let count: Int = {
        var max: Int = 0
        while let _ = Reindeer(rawValue: max) { max += 1 }
        return max
    }()
}

扫码关注云+社区