带有numberFromString的NSNumberFormatter问题

时间:2013-10-14 08:44:28

标签: ios objective-c nsnumber nsnumberformatter nslocale

我使用此方法在NSString上有一个类别:

-(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-IT(小数分隔符:“,”分组分隔符:“。”)

当我使用stringFromNumber和NSNumber 90000时,NumberFormatter返回一个格式正确的字符串“90.000”

在文本字段中我写字符串“90.000”时NumberFormatter返回nil而不是NSNumber 90000

为什么?

由于

编辑: textfield delegate

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

2 个答案:

答案 0 :(得分:2)

您必须在格式化程序上设置NumberStyle

[nfStr setNumberStyle:NSNumberFormatterDecimalStyle];

您可以使用:

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

答案 1 :(得分:0)

Lools喜欢你的字符串格式是不正确的,因为numberfromstring方法接受字符串然后返回数字,但在你的情况下90.000不是一个有效的字符串似乎 所以尝试传递这样并检查

 NSString *num=@"90.000"; 

然后检查它应该有效。