iOS 4+; NSNumberFormatter に nil 値を渡すと、設定された 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)<< これは '### である必要があります
[fmtr stringFromNumber:0]=>>0000<<
[fmtr stringFromNumber:null]=>>(null)<<
[fmtr numberFromString:nil]=(null)
[fmtr numberFromString:@"0"]=0
[fmtr numberFromString:NULL]=(ヌル)