NSNumberFormatter не возвращает nilSymbol по нулевому значению. Что мне не хватает?

iOS 4+; когда я передаю значение nil в свой NSNumberFormatter, я хочу, чтобы в конце был установлен символ nil (NSString *). Он работает для символа «нуль», но не для символа nil. Я пробовал много разных настроек конфигурации, таких как поведение, группировка и т. Д.

fmtr = [[NSNumberFormatter alloc] init]; [fmtr setNumberStyle:NSNumberFormatterDecimalStyle]; [fmtr setFormatterBehavior:NSNumberFormatterBehaviorDefault]; [fmtr setUsesGroupingSeparator:NO]; [fmtr setNilSymbol:@"###"]; [fmtr setZeroSymbol:@"0000"]; NSLog(@"[fmtr nilSymbol]=>>%@<<", [fmtr nilSymbol]); NSLog(@"[fmtr stringFromNumber:nil]=>>%@<< this should be '###", [fmtr stringFromNumber:nil] ); NSLog(@"[fmtr stringFromNumber:0]=>>%@<<", [fmtr stringFromNumber:[NSNumber numberWithInt:0]] ); NSLog(@"[fmtr stringFromNumber:null]=>>%@<<", [fmtr stringFromNumber:NULL] ); NSLog(@"[fmtr numberFromString:nil]=%@", [fmtr numberFromString:nil] ); NSLog(@"[fmtr numberFromString:@\"0\"]=%@", [fmtr numberFromString:@"0"] ); NSLog(@"[fmtr numberFromString:NULL]=%@", [fmtr numberFromString:NULL] ); 

Вот результат теста:

[fmtr nilSymbol] = >> ### <<

[fmtr stringFromNumber: nil] = >> (null) << this should be ###

[fmtr stringFromNumber: 0] = >> 0000 <<

[fmtr stringFromNumber: null] = >> (null) <<

[fmtr numberFromString: nil] = (null)

[fmtr numberFromString: @ "0"] = 0

[fmtr numberFromString: NULL] = (null)

Я не уверен, почему это не работает при использовании numberFromString, но я сам это испытал, и он работает, если вместо этого вы используете «stringForObjectValue». (замените все «stringFromNumber» на «stringForObjectValue»)

Изменить: нашел ответ

В этом блоге: http://www.nsformatter.com/blog/2010/6/9/nsnumberformatter.html

он говорит:

  • (NSString *) stringFromNumber: (номер NSNumber *);

Это удобный метод. Этот метод возвращает nil, если число равно nil, в противном случае он вызывает -stringForObjectValue :. Поэтому он ведет себя как -stringForObjectValue :, за исключением того, что он никогда не возвращает -nilSymbol

Кажется, что цель метода (не использовать nilSymbol)

  • Ошибка с NSNumberFormatter currencySymbol
  • Получение номера из String Swift 2 Issue
  • NSNumberFormatter: определение числа с помощью AND (английская орфография)
  • Преобразование String to Double преобразуется в Swift
  • iOS - Отображение валюты без центов с использованием NSNumberFormatter
  • Сокращение номеров валют с использованием сокращений при сохранении формата валюты
  • NSNumberFormatter с разделителем с запятой
  • Как ввести формат валюты в текстовое поле (справа налево) с помощью Swift?
  • Как добавить запятую и десятичные знаки в мой UITextField динамически?
  • NSNumberFormatter отображает 1,000,000 как 1 млн. И т. Д.
  • Множитель NSNumberFormatter округляется вниз, а не показывает долю
  • Interesting Posts

    Лучший способ сделать viewcontroller для разных экранов

    Как распаковать gzip-файл и записать его в несжатый файл, на iPhone

    Измените размер представленного контроллера из-за изменений содержимого при представлении UIModalPresentationFormSheet в iOS8

    Лучший способ отменить SKDownload

    Как создать центрированный UICollectionView, например, в Spotify's Player

    Как создать интерфейс в Swift

    Программная отправка приложения в фоновый режим

    Приложения для iPad никогда не устанавливаются в симуляторе Retina

    Данные по горизонтальной перезагрузке iOS 9 UICollectionView не работают

    iOS: Отмена UIScrollView затрагивает при использовании 2 пальцев

    Аудиоустройства в заблокированном экране iPhone, iPad

    Как взять UIImage из AVCaptureVideoPreviewLayer вместо захвата AVCapturePhotoOutput

    Как копировать объекты массива, которые находятся в разных вкладках

    Что такое код для отображения пятизначного юбилейного египетского иероглифа на iOS?

    Являются ли kCFNull и взаимозаменяемыми

    Давайте будем гением компьютера.