[英]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.