cfi*_*her 4 enums introspection swift swift2
是否有可能以编程方式找出Enum在Swift 2中有多少"案例"并迭代它们?
这段代码不能编译,但它让你知道我想要实现的目标:
enum HeaderStyles{
case h1
case h2
case h3
}
for item in HeaderStyles{
print(item)
}
Run Code Online (Sandbox Code Playgroud)
迭代所有情况的最简单方法是创建一个返回其中一个的计算属性Array:
enum SomeEnum {
case Zero, One, Two
static var allCases: [SomeEnum] {
return [.Zero, .One, .Two]
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想要一个自动数组,你可以使用IntrawValue,这样你就不必在添加额外的代码时更改任何代码case:
斯威夫特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
})
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特2
enum SomeEnum: Int {
case Zero, One, Two
static var allCases: [SomeEnum] {
var i = 0
return Array(anyGenerator{ SomeEnum(rawValue: i++) })
}
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您都会像这样使用它:
for num in SomeEnum.allCases {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |