无法将类型“ NSTaggedPointerString”的值强制转换为“ NSNumber”

Isuru:

我有一个这样的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将类型'NSTaggedPointerString'(0x10146ecd8)的值强制转换为'NSNumber'(0x102675600)

无法将“NSTaggedPointerString”类型的值转换为“NSNumber” - 从 PHP 到 Swift

无法将类型NSTaggedPointerString的值强制转换为NSDictionary

解析 json 并将 Double 转换为 String(无法将“NSTaggedPointerString”(0x1098a1b90)类型的值转换为“NSNumber”)

nsnumber类型的json值'2'无法转换为nsstring

将float转换为NSNumber

Swift:无法将NSNumber类型转换为预期的参数类型Int16

Swift:将NSNumber转换为NSString(NSNumber不是NSString的子类型)

如何将UITextField值转换为NSNumber?

将ABRecordID始终转换为NSNumber -1

隐式将NSNumber *转换为int

将NSNumber转换为Double(CLLocationDegrees)

如何将NSString转换为NSNumber

避免 JSONSerialization 将 Bool 转换为 NSNumber

将长NSString转换为NSNumber

将int转换为NSNumber时出错

将NSTimeInterval转换为块内的NSNumber

将JSON ARRAY转换为NSnumber数组

无法强制将“ [记录]”类型的值转换为“记录”类型

无法强制将'UIViewController'类型的值转换为'TableView'类型

如何正确地将NSNumber强制转换为long long int?

将NSNumber强制转换为Float时发生意外行为

无法将类型“ UITableViewController”的值强制转换为“ UINavigationController”

无法将类型'__NSCFNumber'()的值强制转换为'NSArray'swift

无法将类型'__NSCFConstantString'的值强制转换为'NSArray'

无法将类型'__NSCFData'的值强制转换为'NSDate'

无法将类型'__NSCFString'的值强制转换为'NSData'

值影响后,无法将类型强制转换为“布尔”

无法将类型T的值强制转换为T