【问题标题】:NSNumberFormatter failing with nil valueNSNumberFormatter 失败,值为 nil
【发布时间】:2012-05-05 04:20:28
【问题描述】:

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

在 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 值?

【问题讨论】:

    标签: cocoa interface-builder cocoa-bindings nstextfield nsnumberformatter


    【解决方案1】:

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

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

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

    Apple 文档中的“Key-Value Coding Programming Guide”以及“Mac OS X 的 Cocoa 编程”的第 7 章中介绍了该主题。

    【讨论】:

    • 感谢您的回答。我已经尝试过这种方法,虽然它删除了异常,但它将文本字段留空。 (相反,它不应允许 nil 值并弹出通知要求用户输入有效数字。)
    【解决方案2】:

    NSNumberFormatternilSymbol 设置为非空字符串。

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

    yourNumberFormatter.nilSymbol = "?"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2020-06-29
      相关资源
      最近更新 更多