Создание пользовательского средства форматирования

Можно создать пользовательские подклассы NSFormatter отформатировать представления данных кроме дат и чисел.

Разделять на подклассы NSFormatter, необходимо, по крайней мере, переопределить эти методы:

В первом методе Вы преобразовываете объект ячейки в строковое представление; во втором методе Вы преобразовываете строку в объект, связанный с ячейкой.

Можно также переопределить attributedStringForObjectValue:withDefaultAttributes: преобразовать объект в строку, имеющую атрибуты, связанные с ним. Например, если Вы хотите, чтобы отрицательные финансовые суммы появились в красном, у Вас есть этот возврат метода строка с атрибутом красного текста. В attributedStringForObjectValue:withDefaultAttributes: получите неприписанную строку путем вызова stringForObjectValue: и затем примените надлежащие атрибуты к той строке.

Если строка для редактирования должна отличаться от строки для дисплея — например, версия дисплея валютного поля показывает знак доллара, но версия редактирования не делает — реализация editingStringForObjectValue: в дополнение к stringForObjectValue:.

В OS X можно отредактировать текстовое содержание ячейки при каждом нажатии клавиши и препятствовать тому, чтобы пользователь ввел использование недопустимых символов isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription: и isPartialStringValid:newEditingString:errorDescription:. Можно применить это динамическое редактирование к вещам как номера социального страхования; лицо, вводящее данные, вводит номер только один раз, так как средство форматирования автоматически вставляет символы разделителя.