Как я могу получить NSNumberFormatter для отображения символа бесконечности (∞)? - PullRequest
1 голос
/ 23 февраля 2012

Мое текстовое поле сопоставлено типизированному свойству NSUInteger объекта модели.Когда свойство равно NSUIntegerMax, в текстовом поле NSNumberFormatter отображается -1.Я бы предпочел, чтобы он отображал ∞.

Я пытался установить значение «Формат (-)» (от IB) до ∞, но результат равен ∞1.Существуют методы для определения символа, который будет использоваться при встрече с бесконечностью ... но он никогда не используется.Если нет NSUIntegerMax, какое значение фактически приводит к символу бесконечности ??

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

В целочисленном пространстве нет бесконечности. Только поплавки имеют понятие «бесконечность» (а также «NaN» или «не число»). NSUIntegerMax определенно не бесконечность (это бесконечно меньше бесконечности).

Если вы хотите отобразить конечное целое число в строку , то вам нужно либо преобразовать в числа с плавающей точкой и использовать INFINITY, либо вам нужно создать подкласс NSNumberFormatter, чтобы переопределить stringForObjectValue:, чтобы делать то, что хочу. Или вы можете управлять им на более высоком уровне, если вам нравится, и просто проверить вещи, прежде чем передать их на ваш NSNumberFormatter.

1 голос
/ 23 февраля 2012

NSUIntegerMax это не бесконечность, это просто большое число. Числа с плавающей точкой (float или double) имеют специальные значения для представления бесконечности, и для них средство форматирования чисел будет использовать заданные символы бесконечности.

Чтобы задать символ бесконечности для NSUIntegerMax, вам нужно либо написать свой собственный форматер чисел, либо обработать этот случай отдельно.

...