2011-04-26 14 views
6

आईओएस 4+; जब मैं अपने NSNumberFormatter में एक शून्य मान पास करता हूं, तो मैं बदले में शून्य प्रतीक (सेट (एनएसएसटींग *) चाहता हूं। यह 'शून्य' प्रतीक के लिए काम करता है, लेकिन शून्य प्रतीक के लिए नहीं। मैं व्यवहार, समूह, आदि जैसे कई अलग अलग विन्यास सेटिंग्स की कोशिश की हैNSNumberFormatter शून्य मूल्य पर nilSymbol वापस नहीं लौट रहा है। मैं क्या खो रहा हूँ?

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] = >> ### < <

[stringFromNumber fmtr: शून्य] = >> (शून्य) < < इस होना चाहिए '###

[stringFromNumber fmtr: 0] = >> 0000 < +०१२३८७०३९५४

[stringFromNumber fmtr: अशक्त] = >> (शून्य) < <

[numberFromString fmtr: शून्य] = (शून्य)

[numberFromString fmtr: @ "0"] = 0

[numberFromString fmtr: शून्य] = (शून्य)

उत्तर

12

मुझे यकीन है कि वास्तव में क्यों यह काम नहीं करता जब numberFromString का उपयोग नहीं कर रहा हूँ, लेकिन मैं अपने आप को इस परीक्षण किया है, और यह करता है काम आप "stri का उपयोग करता है, तो ngForObjectValue "इसके बजाए।

संपादित करें ("stringForObjectValue" से बदलें सभी "stringFromNumber"): मिले जवाब

इस ब्लॉग पर: http://www.nsformatter.com/blog/2010/6/9/nsnumberformatter.html

यह कहते हैं:

  • (NSString *) stringFromNumber: (एनएसएनंबर *) संख्या;

यह एक सुविधा विधि है। यह विधि शून्य हो जाती है, यदि संख्या शून्य है, अन्यथा यह -stringForObjectValue:। इसलिए यह -stringForObjectValue तरह :, बर्ताव को छोड़कर यह -nilSymbol रिटर्न कभी नहीं

यह विधि के प्रयोजन हो रहा है (nilSymbol उपयोग करने के लिए नहीं)

संबंधित मुद्दे