2015-06-16 101 views
5

說我有斯威夫特字典混亂

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

爲什麼

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

允許的,而這個:

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

導致錯誤:

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

請解釋爲什麼會發生這種情況,請注意我是Swift新手,沒有任何經驗。

回答

3

dict["list"]![1]!返回尚未(AnyObject)知的對象,如果沒有適當的投編譯器無法知道返回的對象是一個字典

在你的第一個例子中,你正確轉換返回值字典和只有這樣你才能提取你期望的價值。

2

從@giorashc修改答案:使用顯式鑄造像

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

但分解是在這些情況下更好的可讀性。