gpt4 book ai didi

ios - 无法将类型 'NSTaggedPointerString' 的值转换为 'NSNumber'

转载 作者:IT王子 更新时间:2023-10-29 04:58:02 26 4
gpt4 key购买 nike

我有一个像这样的 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,然后将整个结构更改为类,但问题仍然存在。

最佳答案

错误的原因是jsonDict["totalfup"]是一个String(NSTaggedPointerStringNSString的子类),所以你应该将 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
}

关于ios - 无法将类型 'NSTaggedPointerString' 的值转换为 'NSNumber',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com