在 Swift 中使用枚举和开关大小写组合



这是我的代码:

enum GameScreen
{
    case kSceneFlashScreen
    case kSceneMainMenu
    case kSceneGameScreen
    case kSceneStoreScreen
    case kSceneGameOver
}
class YSGameManager: NSObject {
    func replaceGameScene(inScreen: GameScreen)
    {
        switch inScreen
        {
            case GameScreen.kSceneGameScreen: //Error for here
            case GameScreen.kSceneMainMenu : //here also error

        }
    }
}

Eror LOG:"开关"中的"case"标签应至少有一个可执行语句

如何在 Swift 的开关情况下使用枚举?

有一个错误,因为您在:之后和下一个case之前没有任何内容。要解决此问题,您可以:

1. 添加一些代码来做某事。

2.如果要移动到下一个case,请添加fallthrough。这可能是你想做的。但是,在 Swift 中,默认情况下switch语句不会落入下一个情况,它们break

3. 添加break以停止switch语句。

它抱怨你需要在匹配case之后实际做点什么。 否则匹配它没有多大意义,而且很可能是一个错字。

除了覆盖范围之外,例如,如果您不想要default,您想命名每个可能的枚举,即使您不想为其中一些做任何事情。 在这种情况下,请坚持break

switch inScreen {
case kSceneGameScreen:
    break
// etc.
}

请注意,Swift 的 switch 语句中没有隐含的失败。您需要明确给出一个:

switch inScreen {
case kSceneGameScreen:
    // do a game-screen-specific thing
    fallthrough   // then
case kSceneMainMenu:
    // do a thing for both
    // kSceneGameScreen and kSceneMainMenu
// etc.
}

但是如果你只是想匹配两种可能性,你不需要使用fallthrough,你可以将它们与,结合起来:

switch inScreen {
case kSceneGameScreen, kSceneMainMenu:
    // do a thing for both
    // kSceneGameScreen and kSceneMainMenu
// etc.
}

最新更新