【发布时间】:2016-03-28 13:30:02
【问题描述】:
我从服务器收到一个 JSON 字符串,然后我尝试通过这种方式将其转换为 NSDictionary:
let JSON = try NSJSONSerialization.JSONObjectWithData(rToData!, options:[])
guard let JSONDictionary:NSDictionary = (JSON as! NSDictionary) else {
print("My grandma is way more NSDictionary than this")
return
}
转换后,我尝试获取字典中包含的一些数据:特别是我需要一个可以通过这种方式访问的数组:
let myArray = JSONDictionary["data1"][0]["data2"];
XCode 真的不喜欢这个主意,它在第一个括号下放了一个箭头,并说 Value of optional type "AnyObject?"没有打开,你的意思是用“!”或者 ”?” ?。我按照它的建议插入“!”,将前面的代码转换为:
let myArray = JSONDictionary["data1"]![0]["data2"];
此时,以下行(我计算 data2 中元素的数量)显示错误,指出 AnyObject 没有成员 count。
似乎唯一可以正常工作的是这个解决方案,但是除了丑陋和不可读之外,我真的不明白:
let myArray = (JSONDictionary["data1"]?[0]["data2"])!;
你能帮我理解为什么这种对字典中键的基本访问必须如此复杂吗?
我必须说我喜欢 Swift,但我花了很多时间处理可选选项和奇怪的 XCode 警报。
【问题讨论】:
标签: ios swift nsarray nsdictionary