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)
}
fonte
2015-06-06 04:45:24
molto ben spiegato. Molte grazie. – Vakas