我发现[NSTextField integerValue]
的行为与包含数千个分隔符的值不同,具体取决于该值的设置方式。
(我在德国,所以在这些示例中,成千上万的分隔符是点“。”。)
如果我呼叫[myTextField setIntegerValue:4567]
,则文本字段将包含 4.567 (带有tousands分隔符),并且[myTextField integerValue]
返回4567。
如果我手动在文本字段中输入值 4.567 info或使用[myTextField setStringValue:@"4.567"]
,则[myTextField integerValue]
仅返回 4 。
显然,即使在调用setIntegerValue
时本身插入了这样的分隔符,它也会在千位分隔符处停止解析数字。
所以我实际上有两个问题:
-setIntegerValue:
时是否有设置或其他简便的方法可以防止其格式化数字?-integerValue
时,我可以“启用”解析的数字来理解/接受数千个分隔符吗?或者,如果不是,从NSString解析带有千位分隔符的数字的最简单方法是什么?答案 0 :(得分:3)
在情节提要或XIB中的文本字段中添加数字格式化程序(NSNumberFormatter
)。这样会使单元格的内容和文本字段的objectValue
成为NSNumber
而不是NSString
。
在使用-setIntegerValue时是否有设置或其他简单的方法可以阻止它格式化数字??
关闭格式化程序的分组分隔符。
调用-integerValue时,我可以“启用”数字解析功能来理解/接受数千个分隔符吗?
打开格式化程序的分组分隔符并将“主要分组”设置为3。
或者,如果不是,从NSString解析带有千位分隔符的数字的最简单方法是什么?
使用NSNumberFormatter
,请参阅类参考和Number Formatters。
答案 1 :(得分:1)
integerValue
不支持区域设置,它将始终使用.
作为小数点。
您应该改用NSNumberFormatter.numberFromString:
。