2015-06-16 53 views
5

Dire che hoSwift Dizionario confusione

var dict = parseJSON(getJSON(url)) // This results in an NSDictionary 

Perché

let a = dict["list"]![1]! as NSDictionary 
let b = a["temp"]!["min"]! as Float 

domestici, e questo:

let b = dict["list"]![1]!["temp"]!["min"]! as Float 

risultati in un errore:

Type 'String' does not conform to protocol 'NSCopying'

Spiegare perché questo accade, notare che sono nuovo di Swift e non ho esperienza.

risposta

3

dict["list"]![1]! restituisce un oggetto che non è ancora (AnyObject) nota e senza la corretta fusione il compilatore non può sapere che l'oggetto restituito è un dizionario

Nel tuo primo esempio si gettato correttamente il valore restituito a un dizionario e solo allora puoi estrarre il valore che ti aspetti.

2

di modificare la risposta da @giorashc: utilizzare cast esplicito come

let b = (dict["list"]![1]! as NSDictionary)["temp"]!["min"]! as Float 

Ma dividere è meglio leggibile in quei casi.

Problemi correlati