簡體   English   中英

NSNumberFormatter問題與numberFromString

[英]NSNumberFormatter issue with numberFromString

我用這種方法在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];
}

您必須在格式化程序上設置NumberStyle

[nfStr setNumberStyle:NSNumberFormatterDecimalStyle];

您可以使用:

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

像您的字符串格式這樣的大聲笑是不正確的,因為numberfromstring方法接受字符串然后返回數字,但是在您的情況下90.000不是有效的字符串,因此請嘗試像這樣傳遞並檢查

 NSString *num=@"90.000"; 

然后檢查它是否可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM