2015-04-22 239 views
0

這裏使用枚舉和開關的情況下組合是我的代碼:斯威夫特

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:在一個「開關」 「案例」標籤應至少有一個可執行語句

如何在Swift中使用enum開關箱?

+0

您有沒有看過「相關問題」? –

+0

@MartinR,對不起,我認爲它在Xcode 6.3中的新錯誤 – Guru

回答

1

有一個錯誤,因爲你在:之後以及在下一個case之前沒有任何東西。要解決此問題,您可以:

1.添加一些代碼來執行某些操作。

2.如果您想移動到下一個,請添加fallthrough。這可能是你想要做的。但是,在Swift中,switch聲明默認情況下不會落入下一個案例,它們是break

3.break停止switch聲明。

2

這是抱怨,你需要在匹配case後真正做些事情。否則,沒有太多點匹配它,並有可能是一個錯字。

其他可能比覆蓋範圍,即如果你不想要default,你想命名每一個可能的枚舉,即使你不想爲其中的一些做任何事情。在這種情況下,堅持以break

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

注意,有沒有隱含的下跌通過斯威夫特的switch語句。你需要給一個明確的:

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

但如果你只是想匹配兩種可能,你不需要使用告吹,你可以只用,將它們結合起來:

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