相关疑难解决方法(0)

如何在Swift 4.2中获得枚举的下一个例子(即写一个循环方法)

Swift 4.2引入了一种新CaseIterable协议,可自动生成枚举中所有案例的数组属性.
现在我想实现Enum继承的默认方法CaseIterable,可以返回给定案例的下一个案例.如果这种情况是最后一种情况,请返回第一种情况.像一个圆圈.
如果我为特定的Enum写这个,它可以正常工作:

enum Direction: CaseIterable {
  case east, south, west, north

  func next() -> Direction {
    let all = type(of: self).allCases // 1
    if self == all.last! {
      return all.first!
    } else {
      let index = all.firstIndex(of: self)!
      return all[index + 1]
    }
  }
}

print(Direction.east.next()) // south  
print(Direction.north.next()) // east  
Run Code Online (Sandbox Code Playgroud)

但我想对许多Enum实现这个功能.重复复制和粘贴代码并不好(更不用说这个代码对于每个枚举都是完全相同的).
所以我尝试了这个.但出了点问题.
(我建议你将以下代码复制到游乐场,以便更快地理解这个问题):

extension CaseIterable {
  func next() -> Self {
    let all = type(of: self).allCases // 1
    if self == all.last { …
Run Code Online (Sandbox Code Playgroud)

enums swift

5
推荐指数
3
解决办法
522
查看次数

如何增加swift int枚举

我有一个快速的枚举

 enum MainState : Int {
     case NotStarted
     case Init
     case AskWhatToText
     case RecordWhatToText
 }    
 var state = MainState.NotStarted
Run Code Online (Sandbox Code Playgroud)

并希望做类似的事情

state++
Run Code Online (Sandbox Code Playgroud)

但得到一个错误.建议?

swift

2
推荐指数
2
解决办法
2685
查看次数

标签 统计

swift ×2

enums ×1