Vin*_*tho 6 iphone objective-c nsnumberformatter ios
iOS 4+; 当我将一个nil值传递给我的NSNumberFormatter时,我想要设置的nil符号(NSString*)作为回报.它适用于'零'符号,但不适用于零符号.我尝试了许多不同的配置设置,如行为,分组等.
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] );
Run Code Online (Sandbox Code Playgroud)
以下是测试的输出:
[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] =(null)
dre*_*wag 12
我不确定为什么它在使用numberFromString时不起作用,但我自己测试了它,如果你使用"stringForObjectValue"它确实有效.(将所有"stringFromNumber"替换为"stringForObjectValue")
编辑:找到答案
在这个博客上:http://www.nsformatter.com/blog/2010/6/9/nsnumberformatter.html
它说:
- (NSString*)stringFromNumber:(NSNumber*)number;
这是一种方便的方法.如果number为nil,则此方法返回nil,否则调用-stringForObjectValue :. 因此它的行为类似于-stringForObjectValue :,但它永远不会返回-nilSymbol
这似乎是该方法的目的(不使用nilSymbol)
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |