6

我有一个NSTextField我需要用户输入一个介于最大值和最小值之间的数字,如果我能检测到该特定测试何时失败,那就太好了NSNumberFormatter,这样我就可以显示更好的消息(“数字太大”不是很有帮助,它需要显示有效范围)或简单地将字段自动设置为最接近的有效值。

我查看了似乎不允许您修改错误的NSTextField委托方法,并且查看了覆盖确实给了我可以修改的'方法,但似乎没有确定返回哪个特定错误的任何方法。‑control:didFailToFormatString:errorDescription:NSNumberFormatter‑getObjectValue:forString:range:error:NSError

由于我只是输入一个简单的整数,我不需要 中的大部分功能NSNumberFormatter,我最好从头开始编写自己的格式化程序吗?

4

2 回答 2

1

我建议不要在 中强制执行这些限制,而是在NSNumberFormatter发生的逻辑中强制执行它们textDidChange:。根据您的描述,您听起来可能正在使用界面生成器来连接您的数字格式化程序。相反,我会让你的控制器成为NSTextFieldDelegate对于特定的文本字段。然后,您可以直接处理与数字格式化程序的交互,并且可以适当地设置特定错误标签的文本。此外,这允许您提供更复杂的依赖于上下文的后备值。又名:在某些情况下,您可能总是希望数字回落到中间范围,或低端,或较旧的值,或用户跑过的任何边缘。这也将允许您强制执行中断范围,或将异常长的小数强制转换为整洁的特定精度。

于 2010-06-14T08:24:30.993 回答
1

有一种方法可以确定在 NSError 中返回哪个错误。NSError 错误代码文档定义了最大和最小验证失败的错误。只需将-code发送到您的 NSError 对象。

于 2010-04-27T09:14:04.287 回答