将货币值从 JSON 转换为 NSDecimalNumber
Casting currency values from JSON to NSDecimalNumber
我从 API.
收到以下 JSON 回复
{
"status": "success",
"data": [
{
"actual_price": 30,
"offered_deal_price": 16,
"pending_balance": 12.8
}
]
}
所有这些值都是价格。这意味着它们可以是整数值或浮动值。
我 您应该使用 NSDecimalNumber
类型作为货币值。我在转换这些 JSON 值时遇到问题。
这样做,
json["pending_balance"] as! NSDecimalNumber
因以下错误而失败。
无法将“__NSCFNumber”类型的值 (0x10423ccf0) 转换为 'NSDecimalNumber' (0x1046cf1f0)
尝试将其转换为 NSDecimal
结果是
无法将“__NSCFNumber”类型的值 (0x7f9102f79f68) 转换为 'C.NSDecimal' (0x10f23d6e0).
我 可以 但是,将它转换为 Swift 类型,如 Float
或 Double
没有问题。
有人知道 NSDecimalNumber
有什么问题吗?或者继续使用 Float
或 Double
是否安全?如果是,哪一个最适合货币价值?
谢谢。
该错误表明您正在尝试转换为错误的类型。
该值从 JSON 反序列化为 NSNumber
,它无缝桥接到 Double
本机 swift 类型。
与其转换,不如尝试转换:
NSDecimalNumber(decimal: (json["pending_balance"] as! NSNumber).decimalValue)
或
NSDecimalNumber(double: json["pending_balance"] as! Double)
但可能还有其他方法可以进行转换。
我从 API.
收到以下 JSON 回复{
"status": "success",
"data": [
{
"actual_price": 30,
"offered_deal_price": 16,
"pending_balance": 12.8
}
]
}
所有这些值都是价格。这意味着它们可以是整数值或浮动值。
我 NSDecimalNumber
类型作为货币值。我在转换这些 JSON 值时遇到问题。
这样做,
json["pending_balance"] as! NSDecimalNumber
因以下错误而失败。
无法将“__NSCFNumber”类型的值 (0x10423ccf0) 转换为 'NSDecimalNumber' (0x1046cf1f0)
尝试将其转换为 NSDecimal
结果是
无法将“__NSCFNumber”类型的值 (0x7f9102f79f68) 转换为 'C.NSDecimal' (0x10f23d6e0).
我 可以 但是,将它转换为 Swift 类型,如 Float
或 Double
没有问题。
有人知道 NSDecimalNumber
有什么问题吗?或者继续使用 Float
或 Double
是否安全?如果是,哪一个最适合货币价值?
谢谢。
该错误表明您正在尝试转换为错误的类型。
该值从 JSON 反序列化为 NSNumber
,它无缝桥接到 Double
本机 swift 类型。
与其转换,不如尝试转换:
NSDecimalNumber(decimal: (json["pending_balance"] as! NSNumber).decimalValue)
或
NSDecimalNumber(double: json["pending_balance"] as! Double)
但可能还有其他方法可以进行转换。