我使用此方法在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];
}
答案 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";
然后检查它应该有效。