numberFromString 的 NSNumberFormatter 问题
Posted
技术标签:
【中文标题】numberFromString 的 NSNumberFormatter 问题【英文标题】:NSNumberFormatter issue with numberFromString 【发布时间】:2013-10-14 08:44:28 【问题描述】:我在 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];
【问题讨论】:
你能贴出你如何在文本字段中使用它的代码吗? 已发布,是 textfield delgate 即使使用文本字段,它也适用于我 - 什么是 Trim 宏 - 也许不用它试试? 【参考方案1】:您必须在格式化程序上设置NumberStyle。
[nfStr setNumberStyle:NSNumberFormatterDecimalStyle];
你可以使用:
enum
NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
;
【讨论】:
【参考方案2】:Lools 喜欢你的字符串格式不正确,因为 numberfromstring 方法接受字符串然后返回数字,但在你的情况下 90.000 似乎不是一个有效的字符串 所以尝试像这样通过并检查
NSString *num=@"90.000";
然后检查它应该可以工作。
【讨论】:
以上是关于numberFromString 的 NSNumberFormatter 问题的主要内容,如果未能解决你的问题,请参考以下文章