我从 API 获得以下 JSON 响应。
{
"status": "success",
"data": [
{
"actual_price": 30,
"offered_deal_price": 16,
"pending_balance": 12.8
}
]
}
所有这些值都是价格。这意味着它们可以是整数值或 float 值。
我read您应该使用 NSDecimalNumber
类型作为货币值。我在转换这些 JSON 值时遇到问题。
这样做,
json["pending_balance"] as! NSDecimalNumber
因以下错误而失败。
无法将类型“__NSCFNumber”(0x10423ccf0)的值转换为“NSDecimalNumber”(0x1046cf1f0)
尝试将其转换为 NSDecimal
导致了这个
无法将类型“__NSCFNumber”(0x7f9102f79f68)的值转换为“C.NSDecimal”(0x10f23d6e0)。
不过,我可以将它毫无问题地转换为 Float
或 Double
等 Swift 类型。
有人知道 NSDecimalNumber
有什么问题吗?或者继续使用 Float
或 Double
是否安全?如果是,哪一个最适合货币值(value)?
谢谢。
最佳答案
该错误表明您正在尝试转换为错误的类型。
该值从 JSON 反序列化为 NSNumber
,它无缝桥接到 Double
原生 swift 类型。
与其进行转换,不如尝试转换:
NSDecimalNumber(decimal: (json["pending_balance"] as! NSNumber).decimalValue)
或
NSDecimalNumber(double: json["pending_balance"] as! Double)
但可能还有其他方法可以进行转换。
关于json - 将货币值从 JSON 转换为 NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31300215/