如何找到Swift Enum的长度或计数(附实例)

76 阅读1分钟

枚举是一组具有固定值的案例语句。

本教程解释了Swift Enum的长度

enum WeekEnd {
    case Saturday
    case Sunday
}

print(WeekEnd.count) 

它抛出了一个错误main.swift:6:15: error: type 'WeekEnd' has no member 'count' 。swift e中没有方法计数

Swift 枚举计算案例

有多种方法可以获得Swift枚举中的案例数:

  • 使用CaseIterable协议

在enum中添加CaseIterable ,它提供了一个allCases 函数,返回enum案例的集合序列。你可以调用count属性来返回enum的长度:

enum WeekEnd:CaseIterable  {
    case Saturday
    case Sunday
}

print(WeekEnd.allCases)  // [main.WeekEnd.Saturday, main.WeekEnd.Sunday]
print(WeekEnd.allCases.count)  // 2
  • 通过实现Int添加自定义的count方法

添加静态count方法,返回Int值。使用一个while循环遍历所有的案例,并将count值递增1。

下面是一个例子

enum WeekEnd:Int   {
    case Saturday
    case Sunday
      static let count: Int = {
        var max: Int = 0
        while let _ = WeekEnd(rawValue: max) {
                max += 1 }
        return max
    }()

}

print(WeekEnd.count) //2