1

我必须丢失一些非常明显的东西,但我已经找遍了,找不到解决方案。NSNumberFormatter失败,无值

在界面生成器中,我将NSNumberFormatter连接到NSTextField,我将该值绑定到float值。这一切都按预期工作,数字得到验证和更新。除非我输入一个空字符串,在这种情况下,我得到一个异常:

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

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

回答

1

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

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

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

苹果文档中的“键值编码编程指南”以及“Cocoa programming for Mac OS X”的第7章中介绍了此主题。

+1

感谢您的回答。我已经尝试了这种方法,虽然它删除了异常,但它将文本字段留空。 (相反,它不应允许零值,并弹出通知,要求用户输入有效的号码。) – Vik 2012-04-25 07:22:48

0

将您的NSNumberFormatternilSymbol设置为非空字符串。

NSTextField然后不会再抛出异常,但向用户抱怨""是无效的值。我不确定这是为什么可行,但这是我找到的最简单的解决方案。

yourNumberFormatter.nilSymbol = "?"