我尝试遍历所有标签项以使用枚举通过开关设置一些属性:
enum TabItems {
case FirstTab
case SecondTab
case ThirdTab
}
这是我的循环:
for item in self.tabBar.items {
switch item.tag {
case .FirstTab:
println("first tab")
default:
println("tab not exists")
}
}
出现错误:Enum case 'FirstTab' not found in type 'Int!'
。如何在此switch语句中正确使用enum?
答案 0 :(得分:11)
您收到错误是因为item.tag
最初在API中被声明为Int
(NSInteger
},但您尝试将其与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")
}
}
或者您可以将代码转换为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")
}
}
}