1

我使用这种方法在 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

为什么?

谢谢

编辑:文本字段委托

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

2 回答 2

2

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

[nfStr setNumberStyle:NSNumberFormatterDecimalStyle];

您可以使用:

enum {
   NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
   NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
   NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
   NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
   NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
   NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
};
于 2013-10-15T07:23:17.063 回答
0

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

 NSString *num=@"90.000"; 

然后检查它应该工作。

于 2013-10-14T09:24:42.010 回答