2015-06-06 17 views

risposta

15
let someString = “Some String” 
let someString: String = “Some String” 

Per questi due:

C'è zero differenza di efficienza di runtime tra i due. Durante la compilazione, Swift sta inferendo il tipo e lo scrive per te. Ma una volta compilate, le due affermazioni sono identiche.

let someString = “Some String” as String 

significa che si sta lanciando someString valore di stringa, se non è stringa.

let someString = “Some String” as! String 

significa che sono forzatamente casting “Alcuni String” come una stringa, ma se non è convertibile in stringa allora andrà in crash l'applicazione.

let someString = “Some String” as? String 

significa che si sta lanciando opzionalmente “Some String” a stringa significa che se non è convertibile a stringa allora tornerà a zero, ma incidente abituato a questo punto.

Per l'ultima dichiarazione 3 Compilarebbe e funzionerà ma è assolutamente sbagliato eseguire il cast da String a String. non è necessario trasmettere un numero String a String.

E gli ultimi 2 as? e as! avrebbero sempre avuto successo nel tuo caso.

consideri sotto esempio:

let stringObject: AnyObject = "Some String" 
let someString3 = stringObject as! String 
let someString5 = stringObject as? String 

Questo è quando hai bisogno di lanciare. Usa as! solo se sai che è una stringa. E usa as? se non sai che sarà una stringa o meno.

unica forza abbattuta con as! se si è sicuri altrimenti utilizzare fusione condizionale in questo modo:

if let someString5 = stringObject as? String { 
    println(someString5) 
} 
+0

molto ben spiegato. Molte grazie. – Vakas

Problemi correlati