NSTextField:integerValue 行为不一致

NSTextField: integerValue behaving inconsistently

我发现 [NSTextField integerValue] 对包含千位分隔符的值的行为有所不同,具体取决于值的设置方式。

(我在德国,所以在这些例子中我的千位分隔符是一个点“.”)。

显然它停止解析千位分隔符处的数字,即使它在调用 setIntegerValue.

时自己插入了这样一个分隔符

所以我实际上有两个问题:

  1. 有什么设置或其他简单的方法可以防止它在使用 -setIntegerValue: 时格式化数字吗?
  2. 我可以在调用-integerValue时"enable"将号码解析为understand/accept千位分隔符吗?或者,如果没有,从 NSString 中解析带有千位分隔符的数字的最简单方法是什么?

integerValue 不区分语言环境,它将始终使用 . 作为小数点。

您应该改用 NSNumberFormatter.numberFromString:

Link to NSNumberFormatter class reference.

将数字格式化程序 (NSNumberFormatter) 添加到故事板或 XIB 中的文本字段。这使得单元格的内容和文本字段的 objectValue 成为 NSNumber 而不是 NSString.

Is there a setting or other easy way that I can prevent it to format the number when using -setIntegerValue: ?

关闭格式化程序的分组分隔符。

Can I "enable" the number parsing to understand/accept thousands separators when calling -integerValue?

打开格式化程序的分组分隔符并将主要分组设置为 3。

Or, if not, what would be the simplest way to parse a number with thousands separator from an NSString?

使用 NSNumberFormatter,参见 class 参考和 Number Formatters