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)

One Solution collect form web for “NSNumberFormatter не возвращает nilSymbol по нулевому значению. Что мне не хватает?”

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

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

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

он говорит:

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

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

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

  • NSNumberFormatter отображает 1,000,000 как 1 млн. И т. Д.
  • Как избежать округления в NSNumberFormatter
  • NSNumberFormatter возвращает nil на устройстве, а не на симуляторе
  • Округление десятичной дроби в ios
  • NSNumberFormatter Валюта отображается по-разному в iOS 5.1 и 6.x
  • Преобразование String to Double преобразуется в Swift
  • NSNumberFormatter и 'th' 'st' 'nd' 'rd' (порядковый номер)
  • NSNumberFormatter отображают скобки на отрицательных значениях
  • NSNumberformatter добавляет дополнительный ноль
  • ios numberformatter currency удаляет конечные десятичные числа, если 0
  • Ошибка с NSNumberFormatter currencySymbol
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.