Самый простой способ перебрать все случаи — создать вычисляемое свойство, которое возвращает Array
из них:
enum SomeEnum {
case Zero, One, Two
static var allCases: [SomeEnum] {
return [.Zero, .One, .Two]
}
}
Если вам нужен автоматический массив, вы можете использовать Int
как rawValue, поэтому вам не нужно менять какой-либо код, если вы добавите дополнительный case
:
Swift 3/4: ++
и --
удалены, а anyGenerator
переименовано в AnyIterator
.
enum SomeEnum: Int {
case Zero, One, Two
static var allCases: [SomeEnum] {
var i = 0
return Array(AnyIterator{
let newEnum = SomeEnum(rawValue: i)
i += 1
return newEnum
})
}
}
Свифт 2
enum SomeEnum: Int {
case Zero, One, Two
static var allCases: [SomeEnum] {
var i = 0
return Array(anyGenerator{ SomeEnum(rawValue: i++) })
}
}
В обоих случаях вы должны использовать его следующим образом:
for num in SomeEnum.allCases {
// ...
}
person
Qbyte
schedule
25.08.2015