这是我的代码:
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.
}