2016-11-07 92 views
0

我已經JSON數據序列化爲的NSDictionary類型,例如夫特解析JSON與變量類型

{ 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' 

什麼是錯的,我該如何解決這個問題?

回答

2

條件救援!

let data: Int = json["data"] as? Int ?? 0 

如果爲"data"鍵的值丟失或"0"data它將被設置爲零。

0

對於一個好的答案,您需要發佈更多的上下文,以瞭解哪些代碼導致這兩個值是調試器。 0的收益字符串很奇怪,但其他數字產生整數。

這裏是眼前的問題的解決方案:

let x = json["data"] 
let y = x as? Int ?? Int(y as! String)! 

這將第一(安全)嘗試轉換爲Int。如果失敗,它將強制轉換爲String,然後通過Int初始值設定項運行,以便解析。