2016-12-23 3 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")

Смежные вопросы