我正在尝试遍历所有选项卡项以通过使用枚举的开关设置一些属性:
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?
你得到的错误是因为 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")
}
}
或者您可以将标签转换为您的标签 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")
}
}
}
你得到的错误是因为 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")
}
}
或者您可以将标签转换为您的标签 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")
}
}
}