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)

  • Форматирование строки, содержащей число с разделом запятой
  • Преобразование строки валюты в float в Objective-C
  • Округление десятичной дроби в ios
  • NSNumberFormatter paddingPosition не работает
  • Множитель NSNumberFormatter округляется вниз, а не показывает долю
  • Пытаться форматировать UITextField, чтобы вести себя как калькулятор валют только для числового ввода в iOS
  • Локализация чисел в iOS
  • UILabel для отображения 1k для int value 1000 и 2k для 2000 и так далее
  • Предотвращение десятичных знаков с помощью NSNumberFormatter
  • NSNumberFormatter: определение числа с помощью AND (английская орфография)
  • Установить точность для значения NSNumber
  • Давайте будем гением компьютера.