Altro rispondere rs ti sta dicendo di scartare l'opzionale, ma in realtà il problema è che sei forza -avvolgimento del facoltativo con !
, nonostante sia nil
.
Quando si scrive something!
quello che stai dicendo è “something
potrebbe essere nil
, ma se lo è, io voglio che il mio crash del programma”.
Il motivo per cui una chiamata potrebbe restituire nil
è se il risultato non è valido, ad esempio se si tenta di recuperare una chiave da un dizionario che non è presente o che un URL non punta a un download valido Immagine.
È possibile combinare il controllo per nil
con una dichiarazione if
che decompone l'opzionale e restituisce un valore non facoltativo purché il valore non sia nil
. È inoltre possibile concatenare insieme, quindi se avete bisogno di scartare un valore, quindi passare in una chiamata che restituisce anche un optional, si può fare tutto in una if
dichiarazione:
if let httpUrl = subJson["image_url"].string,
url = NSURL(string: httpUrl),
data = NSData(contentsOfURL: url),
image = UIImage(data: data)
{
// use image value
}
else {
// log some error
}
nota, il primo linea, la chiamata è a .string
anziché .stringValue
- .string
restituisce anche un optional con nil
se il valore non è presente.
Ovviamente, la combinazione di tutti questi scartini insieme significa che non è possibile dire a quale uno non riuscito, quindi è possibile che si desideri suddividerli in istruzioni separate.
fonte
2015-04-30 08:57:26
Questa è una caratteristica di base del linguaggio Swift. È necessario scaricare seriamente i libri Swift dal bookstore Apple e leggerli. Quando scrivi url! significa "per favore arresti se url è nullo". – gnasher729