我将JSON数据序列化为NSDictionary类型,例如
{ data = 0; } // "data":"0" (when I see its value in debugger)
或
{ data = 1; } //"data": Int64(1)(when I see its value in debugger)
我试图以下列方式访问此数据:
json["data"] as! Int
,但有时它不能被解析为Integer,因为如果它的0它有String值,我得到错误:
Could not cast value of type 'NSTaggedPointerString' (0x109b54b90) to 'NSNumber'
有什么问题,我该如何解决?
答案 0 :(得分:2)
拯救的条件!
"data"
如果"0"
键的值丢失或data
{{1}}它将被设置为零。
答案 1 :(得分:0)
要获得一个好的答案,您需要发布更多关于导致这两个值的代码是调试器的上下文。奇数是0的收益率字符串,但其他数字会产生整数。
以下是解决当前问题的方法:
let x = json["data"]
let y = x as? Int ?? Int(y as! String)!
这将首先(安全地)尝试强制转换为Int
。如果失败,它会强制转换为String
,然后通过Int
初始化程序运行,以便对其进行解析。