我有一个这样的Swift结构。
struct Usage {
var totalData: Double
var remainingTotalData: Double
init(jsonData: NSData) {
var jsonDict = [String: AnyObject]()
do {
jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
} catch {
print("Error occurred parsing data: \(error)")
}
totalData = jsonDict["totalfup"] as! Double
remainingTotalData = jsonDict["totalrem"] as! Double
}
}
从API,我得到以下JSON响应。这是jsonDict
变量的println 。
[
"totalfup": 96.340899,
"totalrem": 3548710948
]
当我尝试将的值分配给totalfup
属性时totalData
,出现此错误。
无法将类型“ NSTaggedPointerString”的值强制转换为“ NSNumber”
有人知道为什么吗?我尝试将属性类型更改为float
,然后将整个结构更改为class,但是仍然出现问题。
错误的原因jsonDict["totalfup"]
是String(NSTaggedPointerString
是的子类NSString
),因此您应将String转换为Double。
请确保在强制拆开之前捕获异常并检查类型!
totalData = (jsonDict["totalfup"] as! NSString).doubleValue
为了安全起见,请使用if let
:
// check dict["totalfup"] is a String?
if let totalfup = (dict["totalfup"] as? NSString)?.doubleValue {
// totalfup is a Double here
}
else {
// dict["totalfup"] isn't a String
// you can try to 'as? Double' here
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句