[英]NSNumberFormatter not returning nilSymbol on nil value. What am I missing?
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] );
以下是測試的輸出:
[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)
我不確定為什么它在使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.