Swift Dictionary混淆

时间:2015-06-16 13:22:18

标签: swift nsdictionary

说我有

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

导致错误:

  

键入' String'不符合协议' NSCopying'

请解释为什么会发生这种情况,请注意我是Swift的新手并且没有经验。

2 个答案:

答案 0 :(得分:3)

dict["list"]![1]!返回一个尚未知的对象(AnyObject)并且没有正确的强制转换,编译器无法知道返回的对象是字典

在第一个示例中,您将返回的值正确地转换为字典,然后才能提取您期望的值。

答案 1 :(得分:2)

修改@giorashc的答案:使用像

这样的显式转换
let b = (dict["list"]![1]! as NSDictionary)["temp"]!["min"]! as Float

但在这些情况下,拆分它更具可读性。