1

Мне, должно быть, недостает чего-то очень очевидного, но я просмотрел все и не могу найти решение.NSNumberFormatter с ошибкой с нулевым значением

В интерфейсе 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?

ответ

1

По умолчанию метод setNilValueForKey: метод заключается в создании исключения. Вы должны реализовать этот метод в своем коде, чтобы переопределить поведение по умолчанию. Например, чтобы присвоить значение 0.0, когда ничего не введено. Пример:

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

Вы также можете указать минимальное и максимальное значение в числе форматировщика атрибутов инспектора.

Этот раздел освещен в «Руководстве по программированию для кодирования ключевых значений» в документации по яблокам, а также в главе 7 «Программирование какао для Mac OS X».

+1

Спасибо за ответ. Я пробовал этот подход, и, хотя он удаляет исключение, он оставляет текстовое поле пустым. (Вместо этого он не должен допускать значения nil и всплывать уведомление, запрашивающее у пользователя, чтобы ввести действительный номер.) – Vik

0

Установите nilSymbol вашего NSNumberFormatter на непустую строку.

NSTextField затем больше не выдает исключение, но жалуется пользователю, что "" является недопустимым значением. Я не уверен, почему это работает, но это самое простое решение, которое я нашел.

yourNumberFormatter.nilSymbol = "?"