I have a category on NSString with this method:
-(NSNumber *)numberValue
{
if (!nfStr)
{
nfStr = [[NSNumberFormatter alloc] init];
}
NSLocale *current = [NSLocale autoupdatingCurrentLocale];
[nfStr setLocale:current];
[nfStr setDecimalSeparator:[current objectForKey:NSLocaleDecimalSeparator]];
[nfStr setGroupingSeparator:[current objectForKey:NSLocaleGroupingSeparator]];
return [nfStr numberFromString:self];
}
My current locale is it-IT (decimal separator: "," grouping separator: ".")
when I use stringFromNumber with NSNumber 90000 the NumberFormatter return a correctly formatted string "90.000"
when in a textfield I write the string "90.000" the NumberFormatter return nil instead of NSNumber 90000
why?
Thanks
edit: textfield delegate
-(void)textFieldDidEndEditing:(UITextField *)textField
{
myObject.r.qtaOm = [Trim(textField.text) numberValue];
}
You have to set the NumberStyle on the formatter.
[nfStr setNumberStyle:NSNumberFormatterDecimalStyle];
You can use:
enum {
NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
};