OS X App使用逗号转换文本字段导致双值问题

时间:2018-02-02 22:36:49

标签: swift macos nstextfield

我正在创建一个OS X应用程序,当我这样做时:

var tempVal = 10495.33
tempTextField.doubleValue = self.tempVal 

它显示如下:10,495.33。注意逗号。

现在当我在NSTextField中将该值修改为30,400.34并尝试将其分配回doubleValue时,事情就搞砸了。

tempVal = tempTextField.doubleValue //Now this makes tempVal = 30 instead of 30,400.34

这完全是因为逗号。没有逗号,事情就好了。

我知道有一个错误的解决方法,我只是从数字字符串中删除所有逗号,但我觉得有更好/正确的方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

该问题很可能是由您的系统设置引起的。显然(不知道为什么),您应该以类似于US的格式输入数字(使用“。”作为小数点分隔符),但是文本字段的输出取决于您的系统设置。因此,如果您在欧洲,最有可能使用“,”作为小数点分隔符

您可以按以下方式修复它(您可以配置NSTextField的格式,因此无需格式化输入的数据)

//This codes works in swift 4
//This should be your textfield. It is either programmed or you link it through storyboard
var myTextField                = NSTextField()

//This is a formatter. You can set it up how to format the textfield
var myFormat                = NumberFormatter()
myFormat.decimalSeparator   = "."
myFormat.numberStyle        = .decimal

//Now you connect the two
myTextField.formatter       = myFormat