2015-06-16 104 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 

但分解是在这些情况下更好的可读性。