2

我一定遗漏了一些非常明显的东西,但我已经看了一遍,找不到解决方案。

在 Interface Builder 中,我将 NSNumberFormatter 连接到 NSTextField,我已将值绑定到浮点值。这一切都按预期工作,数字得到验证和更新。除非我输入一个空字符串,否则我会得到一个异常:

Exception detected while handling key input.
[<ResolutionSetting 0x11d029430> setNilValueForKey]: could not set nil as the value for the key scale.

如果文本字段为空,有什么方法可以让 NSTextField 返回一个空字符串 (@"") 而不是 nil?或者,有没有办法让 NSNumberFormatter 处理 nil 值?

4

2 回答 2

1

setNilValueForKey: 方法的默认行为是引发异常。您需要在代码中实现此方法以覆盖默认行为。例如,在未输入任何内容时分配 0.0 值。例子:

- (void)setNilValueForKey:(NSString *)key{
//here you can either assign @"" or 0.0
}

您还可以在数字格式化程序属性检查器中指定最小值和最大值。

这个主题在苹果文档的“Key-Value Coding Programming Guide”和“Cocoa Programming for Mac OS X”的第 7 章中有介绍。

于 2012-04-24T18:15:06.167 回答
1

nilSymbolof your设置NSNumberFormatter为非空字符串。

NSTextFieldthen 不再抛出异常,而是向用户抱怨这是""一个无效值。我不确定为什么会这样,但这是我找到的最简单的解决方案。

yourNumberFormatter.nilSymbol = "?"
于 2017-03-15T22:12:05.637 回答