2013-10-14 3 views
1

У меня есть категория на NSString с помощью этого метода:NSNumberFormatter проблема с numberFromString

-(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]; 
} 

Моя текущая локаль он-IT (десятичный разделитель: "" группировка разделитель: "")

когда Я использую stringFromNumber с NSNumber 90000 NumberFormatter возвращают правильно отформатированную строку «90,000»

, когда в текстовое поле я пишу строку «90.000» в NumberFormatter возвращение ноль вместо NSNumber 90000

Почему?

Благодаря

редактировать: TextField делегат

-(void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    myObject.r.qtaOm = [Trim(textField.text) numberValue]; 
} 
+0

Вы можете разместить код, как вы используете его с текстовым полем? –

+0

отправлено, является текстовым полем delgate –

+0

Он работает для меня даже с текстовым полем - что такое Trim macro - может быть, попробовать без него? –

ответ

2

Вы должны установить NumberStyle на форматирование.

[nfStr setNumberStyle:NSNumberFormatterDecimalStyle]; 

Вы можете использовать:

enum { 
    NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, 
    NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, 
    NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, 
    NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle, 
    NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle, 
    NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle 
}; 
0

Lools как ваш формат строки не correctcorrect, потому что numberfromstring метод принимает строку и возвращает число, но в вашем случае 90,000 не является действительной строкой, кажется Так попробуйте передать, как это и проверить

NSString *[email protected]"90.000"; 

а затем проверить это S Должна работать.

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