Swift格式化货币返回nil

时间:2015-04-04 17:39:19

标签: ios swift

我正在尝试将数字格式化为货币。

let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_GB")
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle

let limit = formatter.numberFromString("12.99") as? NSDecimalNumber

但是,常数限制返回为零。奇怪的是,这段代码直到最近才起作用,但不确定可能发生的变化。示例看起来没问题,或者我错过了什么?

修改

为了给出上下文,我试图将字符串数字(从输入元素)解析为十进制数字以存储为货币值。我的错误显示为设置数字样式,我使用.CurrencyStyle,但应使用.DecimalStyle

1 个答案:

答案 0 :(得分:1)

作为我试过的第一次测试

println(formatter.stringFromNumber(12.99))  // prints "£12.99"

然后我试了

let limit = formatter.numberFromString("£12.99") as? NSDecimalNumber  // gives nil

但是

let limit = formatter.numberFromString("£12.99") // gives 12.99

尽管

let limit = formatter.numberFromString("12.99") // gives nil

所以货币符号是强制性的