我有一个转向字典对象的json。转储时,您可以看到返回以下内容
▿ (2 elements)
- key: "LivingArea"
- value: NULL #2
- super: NSString
- super: NSObject
假设userDict是我的字典对象
let LivingArea = userDict?["LivingArea"] as? Int
返回:可选(5)
但我需要打开包装,所以我试试
let LivingArea = userDict?["LivingArea"] as! Int
这使应用程序崩溃,具体如下: 无法转换类型' NSTaggedPointerString' (0x111601d60)到' NSNumber' (0x110c0e4a8)。
如何获取LivingArea的值解包。为什么它不像Int那样? 这是json的一个例子
["District": 4, "Napa": 43, "LivingArea": 2, "CityName": LA, "CityCode": 1103]
谢谢
答案 0 :(得分:3)
似乎并非JSON中的所有条目都具有LivingArea的数值。
一种选择是将变量保持为可选,并在需要时将其展开。不要强行解包,否则当值丢失或没有整数时你会崩溃。
您应该进行防御性编码,特别是在处理来自外部源的数据时。
另一种选择是使用
将默认值设置为0let livingArea = userDict?["LivingArea"] as? Int ?? 0