[英]Swift parse JSON with variable types
我有序列化為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'
有什么問題,我該如何解決?
有條件進行救援!
let data: Int = json["data"] as? Int ?? 0
如果"data"
鍵的值丟失或為"0"
則data
將被設置為零。
為了得到一個好的答案,您需要發布更多上下文,以確定導致這兩個值的代碼是調試器的原因。 奇怪的是,0會產生字符串,而其他數字會產生整數。
這是眼前問題的解決方案:
let x = json["data"]
let y = x as? Int ?? Int(y as! String)!
這將首先(安全地)嘗試強制轉換為Int
。 如果失敗,它將強制轉換為String
,然后通過Int
初始化程序運行它,以便對其進行解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.