Swift 快速字典混淆

Swift 快速字典混淆,swift,nsdictionary,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”

说我有

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新手,没有经验。

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


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

要修改@giorashc的答案,请使用显式强制转换,如

let b = (dict["list"]![1]! as NSDictionary)["temp"]!["min"]! as Float
但在这些情况下,拆分它更易于阅读