2013-10-14 22 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]; 
} 

我现在的locale是它-IT(小数点分隔符 “” 分组分隔符 “”)

时我用stringFromNumber用的NSNumber 90000的NumberFormatter返回正确格式化字符串“90.000”

当一个文本框我写的字符串“90.000”的回报的NumberFormatter零,而不是NSNumber的90000

为什么?

感谢

编辑: 文本字段委托

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

你能后的代码如何与文本框使用它吗? –

+0

已发布,是textfield delgate –

+0

即使使用textfield,它也适用于我 - 修剪宏是什么 - 也许尝试不用它? –

回答

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"; 

再检查它那会工作。