Swift 词典混淆
Swift Dictionary confusion
说我有
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 的新手,没有任何经验。
dict["list"]![1]!
returns 一个未知的对象 (AnyObject
),如果没有正确的转换,编译器无法知道返回的对象是一个字典
在您的第一个示例中,您正确地将返回值转换为字典,然后才能提取您期望的值。
修改@giorashc 的答案:使用像
这样的显式转换
let b = (dict["list"]![1]! as NSDictionary)["temp"]!["min"]! as Float
但在这些情况下将其拆分更易读。
说我有
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 的新手,没有任何经验。
dict["list"]![1]!
returns 一个未知的对象 (AnyObject
),如果没有正确的转换,编译器无法知道返回的对象是一个字典
在您的第一个示例中,您正确地将返回值转换为字典,然后才能提取您期望的值。
修改@giorashc 的答案:使用像
这样的显式转换let b = (dict["list"]![1]! as NSDictionary)["temp"]!["min"]! as Float
但在这些情况下将其拆分更易读。