2015-06-30 1 views
27

Ho il seguente frammento di guardia, che sta producendo l'errore "il corpo della guardia potrebbe non cadere". Cosa c'è che non va?Swift 2: il corpo della guardia non può cadere attraverso l'errore

guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else { 
     print("App bundle doesnt exist") 
} 
+6

Forse ti interessa lasciare un commento per il downvote? Ovviamente questo ha aiutato alcune persone questa risposta ... –

risposta

48

Il guard dichiarazione ha bisogno di avere un qualcosa da prendere il flusso del programma di distanza dal campo di applicazione che racchiude (ad esempio più probabile caso è return per tornare dalla funzione). Questo è richiesto in quanto la condizione che la guardia sta proteggendo non sarà valida, quindi il flusso del programma deve andare altrove!

Documentation:

è richiesta la clausola else di un'istruzione guardia, e deve o chiamare una funzione contrassegnata con l'attributo noreturn o programma di trasferimento controllo fuori ambito di inclusione della dichiarazione guardia utilizzando uno dei seguenti dichiarazioni:

  • ritorno
  • pausa
  • continuano
  • tiro
0

considerare l'utilizzo di un return dichiarazione

Una dichiarazione di ritorno si verifica nel corpo di una definizione di funzione o di un metodo e provoca l'esecuzione del programma di tornare alla funzione chiamante o il metodo.