Ale*_*lex 11 enums switch-statement swift
我正在尝试遍历所有选项卡项以通过使用枚举的开关设置一些属性:
enum TabItems {
case FirstTab
case SecondTab
case ThirdTab
}
Run Code Online (Sandbox Code Playgroud)
这是我的循环:
for item in self.tabBar.items {
switch item.tag {
case .FirstTab:
println("first tab")
default:
println("tab not exists")
}
}
Run Code Online (Sandbox Code Playgroud)
有一个错误:Enum case 'FirstTab' not found in type 'Int!'.如何在此switch语句中正确使用enum?
Nat*_*ook 11
您收到错误是因为item.tag声明为Int(NSInteger最初在API中),但您尝试将其与TabItems枚举进行比较.您可以Int在switch语句中使用值:
for item in self.tabBar.items {
switch item.tag {
case 0:
println("first tab")
case 1:
println("second tab")
default:
println("not recognized")
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以将标记转换为您的标记enum,如下例所示.(请注意,您需要更新枚举声明以支持.fromRaw().)
enum TabItems : Int {
case FirstTab = 0
case SecondTab
case ThirdTab
}
for item in self.tabBar.items {
if let tabItem = TabItems.fromRaw(item.tag) {
switch tabItem {
case .FirstTab:
println("first tab")
case .SecondTab:
println("second tab")
default:
println("not recognized")
}
}
}
Run Code Online (Sandbox Code Playgroud)