dimanche 3 juillet 2016

How to format UILabel text to locale specific NSNumberFormatterStyle.DecimalStyle


I have a UILabel to show input text (which has decimal numbers). What I am trying to do is, that the UILabel text can be shown as per locale. E.g.- "1234.56" should be shown as "1,234.56" for US locale, "1.234,56" for DE (Germany) locale and so on. Below is what I have done to achieve this - NSNumberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle NSNumberFormatter.locale = NSLocale(localeIdentifier: language) NSNumberFormatter.maximumFractionDigits = 16 let displayVal: Double = NSNumberFormatter.numberFromString(displayText.text!).doubleValue displayText.text = NSNumberFormatter.stringFromNumber(displayVal) Where displayText is the UILabel to display input. It works fine until 4 digits i.e. "1234" was shown as "1,234" (for US locale). But as soon as 5th digit gets added, nil returned for displayVal constant variable. I could guess from the function definition that there is failure in formatting displayText text string which may be "1,2345" when numberFromString tried to format it as per US locale but failed as this does not comply to US locale format. Can anyone suggest a way to fix this or nicer way of implementation?

Aucun commentaire:

Enregistrer un commentaire