枚举在Swift中切换

时间:2014-08-07 07:22:46

标签: enums swift switch-statement

我尝试遍历所有标签项以使用枚举通过开关设置一些属性:

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?

1 个答案:

答案 0 :(得分:11)

您收到错误是因为item.tag最初在API中被声明为IntNSInteger},但您尝试将其与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")
        }
    }
}