簡體   English   中英

NSNumberFormatter沒有在nil值上返回nilSymbol。 我錯過了什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM