2016-03-31 21 views

risposta

21

Come alcune persone già risposto, è possibile utilizzare let

guard let preview = post["preview"] else { /* Handle nil case */ return } 

Se non si utilizza la variabile , puoi usare un trattino basso per non dichiarare la variabile ed evitare l'avvertimento.

guard let _ = post["preview"] else { /* Handle nil case */ return } 

Si può anche fare un controllo booleano regolare invece di utilizzare let

guard post["preview"] != nil else { /* Handle nil case */ return } 

Un caso più generale per un controllo booleano su un guard

guard conditionYouExpectToBeTrue else { /* Handle nil case */ return } 

Se si vuole essere in grado per modificare la variabile, è possibile utilizzare var anziché let

guard var preview = post["preview"] else { /* Handle nil case */ return } 

Swift 3,0

È possibile combinare var/let con un assegno booleano utilizzando le virgole tra le diciture.

guard let preview = post["preview"], preview != "No Preview" else { /* Handle nil case */ return } 

2.x Swift

È possibile combinare var/let con il controllo booleano utilizzando dove where

guard let preview = post["preview"] where preview != "No Preview" else { /* Handle nil case */ return } 
+0

Ho provato a fare un controllo nullo con guardia e ho ottenuto un risultato strano (vedi modifica). Qualche idea del perché? – yesthisisjoe

+0

Perché lo scarti due volte? – EmilioPelaez

+0

Ho a che fare con JSON che per qualche ragione sembra darmi dati solo dopo averlo srotolato due volte. – yesthisisjoe

1

È possibile utilizzare la guardia per afferrare il valore dal dizionario post:

guard let value = post["preview"] else { 
    return // or break, or throw, or fatalError, etc. 
} 
// continue using `value` 
+0

Quando faccio una cosa del genere, post [ "anteprima"] si comporta in modo diverso in seguito (vedi modifica). Sai cosa succede? – yesthisisjoe

+0

Non importa, era un problema diverso. Grazie. – yesthisisjoe

1

È possibile utilizzare le guardie con let.

guard let preview = post["preview"] else { 
    //handle case where the variable is nil 
} 
+0

Penso che OP voglia una dichiarazione 'guard' – nielsbot

1

penso che si potrebbe desiderare una costruzione guard-let, in questo modo:

guard let preview = post["preview"] else { */ nil case */ } 

/* handle non-nil case here... preview is non-nil */ 
Problemi correlati