Я бы создал подкласс NSFormatter , чтобы выполнить преобразование между строками и объектами вашего пользовательского класса. Таким образом, вы можете связать средство форматирования с элементами управления пользовательского интерфейса, и тогда они автоматически предоставят вам объекты правильного типа.
Зависит от того, как вы используете ваши фактические цифры. Например, вы можете иметь общий числовой класс с именем Length и подклассы с именами LinegthInInches и LengthInMetres (скажем). Или вы можете пойти с одним классом, у которого есть свойство, называемое юнитами, которое говорит вам, являются ли юниты футами или метрами или чем-то еще. Или у вас может быть протокол, который определяет необходимые методы, которые любой объект должен реализовать, чтобы считаться одним из ваших чисел. Таким образом, вы можете добавить категорию к NSNumber, чтобы она соответствовала вашему протоколу.
Я бы, вероятно, выбрал первый вариант, то есть плоскую иерархию классов с подклассом для каждого типа модуля. Ваш подкласс NSNumberFormatter определит, какой подкласс чисел возвращать, основываясь на заданной строке, и отформатирует свои строки на основе класса заданного числа.