2016-12-23 114 views
0

我在使用NSNumberFormatter時遇到了一個問題。在兩種系統語言設置中,我得到兩個不同的結果。NSNumberFormatter.numberFromString返回意外值

現在說系統語言是越南語。當值爲「1.111」(其中包含currencyGroupingSeparator)時,numberFromString返回nil。但是,如果值爲「111」,其中不包含currencyGroupingSeparator,則numberFromString將按照預期返回NSNumber(1.111)。

奇怪的是,當系統語言是英語時,「1.111」和「111」都可以通過numberFromString轉換爲期望的「NSNumber(1.111和111)」。

我是否濫用NSNumberFormatter?

let formatter = NSNumberFormatter() 
formatter.numberStyle = .CurrencyStyle 
formatter.currencySymbol = "" 
formatter.maximumFractionDigits = 0 
formatter.minimumFractionDigits = 0 
formatter.currencyGroupingSeparator = "." 
formatter.currencyDecimalSeparator = "," 
let testNumber = formatter.numberFromString("1.111") 

// nil when system language is Vietnamese, 
// but 1.111 when system language is English 
print("\(testNumber)") 

回答

0

你可以只強制區域設置格式化,那麼這將是相同的所有情況:

formatter.locale = NSLocale(localeIdentifier: "en_US")