Isu*_*uru 3 double json currency nsdecimalnumber swift
我从API获得以下JSON响应.
{
"status": "success",
"data": [
{
"actual_price": 30,
"offered_deal_price": 16,
"pending_balance": 12.8
}
]
}
Run Code Online (Sandbox Code Playgroud)
所有这些价值都是价格.这意味着它们可以是圆值或浮点值.
我读过你应该使用NSDecimalNumber
type作为货币值.我在转换这些JSON值时遇到问题.
这样做,
json["pending_balance"] as! NSDecimalNumber
Run Code Online (Sandbox Code Playgroud)
失败,出现以下错误.
无法将'__NSCFNumber'(0x10423ccf0)类型的值转换为'NSDecimalNumber'(0x1046cf1f0)
试图把它投射到NSDecimal
这导致了这个
无法将类型'__NSCFNumber'(0x7f9102f79f68)的值转换为'C.NSDecimal'(0x10f23d6e0).
但是,我可以将它转换为Swift类型,Float
无论Double
是否有问题.
任何人都知道问题是NSDecimalNumber
什么?或继续安全Float
或Double
?如果是这样哪一个最适合货币价值?
谢谢.
该错误表示您正在尝试转换为错误的类型.该值从JSON反序列化为a NSNumber
,可无缝桥接到Double
本机swift类型.
你应该尝试转换,而不是强制转换:
NSDecimalNumber(decimal: (json["pending_balance"] as! NSNumber).decimalValue)
Run Code Online (Sandbox Code Playgroud)
要么
NSDecimalNumber(double: json["pending_balance"] as! Double)
Run Code Online (Sandbox Code Playgroud)
但可能还有其他方法可以进行转换.
归档时间: |
|
查看次数: |
2748 次 |
最近记录: |