2015-06-16 10 views
5

Say mamSwift słownik zamieszanie

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

Dlaczego

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

dozwolone, a to:

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

skutkuje błędem:

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

Proszę wyjaśnij, dlaczego tak się dzieje, zauważ, że jestem nowy w Swift i nie mam doświadczenia.

Odpowiedz

3

dict["list"]![1]! zwraca obiekt, który nie jest jeszcze (AnyObject) znany i bez odpowiedniej obsady kompilator nie może wiedzieć, że zwrócony obiekt jest słownikiem

W pierwszym przykładzie prawidłowo oddanych zwracanej wartości do słownika i tylko wtedy możesz wyodrębnić wartość, której oczekujesz.

2

Aby zmienić odpowiedź od @giorashc: użyj wyraźnej odlew jak

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

Ale podział jest lepiej czytelny w tych przypadkach.