为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得Swift枚举的计数?

如何获得Swift枚举的计数?

米脂 2019-09-20 16:44:31
如何确定Swift枚举中的个案数?如何获得Swift枚举的计数?
查看完整描述

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

    }()

}


查看完整回答
反对 回复 2019-09-20
?
慕村225694

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。


我不能说这是一个规则还是将来会改变,所以使用风险自负 :)


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 625 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信