3 回答
TA贡献1712条经验 获得超3个赞
我有一篇博文,详细介绍了这一点,但只要您的枚举的原始类型是整数,您就可以这样添加计数:
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
}()
}
TA贡献1880条经验 获得超4个赞
Xcode 10更新
CaseIterable在枚举中采用协议,它提供一个静态allCases属性,其中包含所有枚举案例Collection。只需使用其count属性即可知道枚举有多少个案例。
请参阅马丁的答案以获得一个例子(并提出他的答案,而不是我的答案)
警告:以下方法似乎不再起作用。
我不知道有任何通用方法来计算枚举案例的数量。然而,我注意到hashValue枚举案例的属性是增量的,从零开始,并且顺序由声明案例的顺序决定。因此,最后一个枚举的散列加一个对应于个案的数量。
例如,使用此枚举:
enum Test {
case ONE
case TWO
case THREE
case FOUR
static var count: Int { return Test.FOUR.hashValue + 1}
}
count 返回4。
我不能说这是一个规则还是将来会改变,所以使用风险自负 :)
- 3 回答
- 0 关注
- 625 浏览
添加回答
举报