2012-01-17 7 views
6

मुझे अपने NSNumberFormatter की मुद्रा Symbol प्राप्त करने में कोई समस्या है।
मैं एक मुद्रा कोड "EUR" के साथ एक NSNumberFormatter का उपयोग करता हूं।
जब मैं कीमतों को प्रारूपित करता हूं, प्रतीक सही है, मुझे € प्रतीक मिलता है।
हालांकि, जब मैं विधि [फॉर्मेटर मुद्रासिंबोल] के साथ केवल मुद्रा सिंबल प्राप्त करना चाहता हूं, प्रतीक $ वापस कर दिया जाता है।
यदि मैं मैन्युअल रूप से मुद्रा सिम्बल (उदाहरण के लिए "ए" के साथ) सेट करता हूं तो सबकुछ ठीक काम करेगा और विधि [फॉर्मेटर मुद्रासिंबोल] "ए" प्रतीक वापस कर देगी।NSNumberFormatter मुद्रा के साथ त्रुटि Symbol

2012-01-17 12:29:11.108[4545:207] [formatter currencySymbol] : $ 
2012-01-17 12:29:11.109[4545:207] [formatter currencySymbol] : €0.00 
2012-01-17 12:29:11.110[4545:207] [formatter currencySymbol] : A 
2012-01-17 12:29:11.111[4545:207] [formatter currencySymbol] : A0.00 

के बाद से इसे बदल सकते हैं मैं CURRENCYSYMBOL लिए मजबूर नहीं कर सकते हैं:


यहाँ मेरी कोड

// Create formatter 
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setCurrencyCode:@"EUR"]; 
[formatter setLocale:[NSLocale currentLocale]]; 

// Log the currency symbol 
NSLog(@"[formatter currencyCode] : %@", [formatter currencyCode]); 
NSLog(@"[formatter currencySymbol] : %@", [formatter currencySymbol]); 
NSLog(@"[formatter currencySymbol] : %@", [formatter stringFromNumber:[NSNumber numberWithInt:0]]); 
[formatter setCurrencySymbol:@"A"]; 
NSLog(@"[formatter currencySymbol] : %@", [formatter currencySymbol]); 
NSLog(@"[formatter currencySymbol] : %@", [formatter stringFromNumber:[NSNumber numberWithInt:0]]); 

यहाँ सांत्वना परिणाम है।
क्या कोई सही मुद्रा प्राप्त करने का कोई तरीका है सिंबल किसी दिए गए मुद्रा कोड से संबंधित है?

धन्यवाद

+0

मुझे लगता है कि आपको कंसोल परिणामों से पहला NSLog याद आ रहा है। –

+0

वही समस्या यहाँ! 'मुद्रासिंबोल' सिर्फ यह नहीं लौटा रहा है कि यह क्या माना जाता है - जहां तक ​​हम दस्तावेज़ों से बता सकते हैं कि यह क्या करना चाहिए ......... – ATV

+0

डाउनवोट क्योंकि उत्तर की जांच करने और एक को चिह्नित करने के लिए परेशान नहीं था ठीक है – Andy

उत्तर

1

समस्या हो सकती है कि [formatter setLocale:[NSLocale currentLocale]]; विन्यास आप इसे करने से पहले किया था के कुछ अधिलेखित कर देता है। आप शीर्ष पर उस पंक्ति को घुमाने की कोशिश कर सकते हैं (बस आवंटन/इनिट लाइन के बाद)।

+1

दुर्भाग्यवश मेरे पास अभी भी € – nicolas

+0

की बजाय $ $ है क्या आपने '[formatter internationalCurrencySymbol] '? – Clafou

+1

हां, मैं इसका उल्लेख करना भूल गया। यह मुझे "यूएसडी" देता है। – nicolas

-1

मैं निम्नलिखित कोड/तरीकों का इस्तेमाल किया है एक नाव मूल्य

+(NSString *) formatCurrencyTypeFloat: (float)val { 

NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"us_ES"]; 
    or 
    NSLocale *locale = [NSLocale currentLocale];; 
    [formatter setLocale:locale]; 
    NSLog(@"%@",[formatter stringFromNumber:[NSNumber numberWithFloat:val]]); 
    return [formatter stringFromNumber:[NSNumber numberWithFloat:val]]; 

} 



+(NSString *) formateCurrencyTypeFloat:(float)val withSign:(NSString *)currencySign{ 
    NSNumberFormatter * fmt; 
    NSNumber   * n; 

    fmt = [[ [ NSNumberFormatter alloc ] init ]autorelease]; 
    n = [ NSNumber numberWithFloat: val]; 

    [ fmt setFormatterBehavior: NSNumberFormatterBehavior10_4 ]; 
    [ fmt setCurrencySymbol: currencySign ]; //==> currencySign can be = @"$"; 
    [ fmt setNumberStyle: NSNumberFormatterCurrencyStyle ]; 


    return [ fmt stringFromNumber:n]; 
} 

+(NSString *) formateCurrencyTypeFloat:(float)val withCode:(NSString *)currencyCode{ 
     NSNumberFormatter * fmt; 
     NSNumber   * n; 

     fmt = [[ [ NSNumberFormatter alloc ] init ]autorelease]; 
     n = [ NSNumber numberWithFloat: val]; 

     [ fmt setFormatterBehavior: NSNumberFormatterBehavior10_4 ]; 
     [fmt setCurrencyCode:currencyCode];//====>@"USD"; 
     [ fmt setNumberStyle: NSNumberFormatterCurrencyStyle ]; 


     return [ fmt stringFromNumber:n]; 
    } 
+1

देता है .. और यह सवाल से संबंधित कैसे है? – Jay

2

से मुद्रा पाने के लिए मुद्रा प्रतीक प्राप्त करने के लिए आप NSLocale साथ NSLocaleCurrencySymbol उपयोग कर सकते हैं:

NSLocale* locale = [NSLocale currentLocale]; 
    NSString* cs = [locale displayNameForKey:NSLocaleCurrencySymbol 
           value:currencyCode]; 

प्राप्त करने के लिए स्थानीयकृत नाम ('यूएस डॉलर', 'जापानी येन', ..) आपका उपयोग कर सकते हैं:।

NSLocale* locale = [NSLocale currentLocale]; 
    NSString* cc = [locale displayNameForKey:NSLocaleCurrencyCode 
           value:currencyCode]; 

जहां currencyCode मुद्रा कोड (JPY, अमरीकी डालर, यूरो, ..) में आपकी रुचि है

+0

यह सही जवाब होना चाहिए। – Andy

1

इस formatter.currencyCode = @ "USD" का प्रयास है, वांछित मुद्रा कोड प्रदान करें, यह उचित प्रतीक

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