2010-04-04 23 views
6

मेरा आईफोन ऐप setCurrencyCode का उपयोग कर मुद्रा के रूप में एक NSDecimalNumber प्रारूपित करता है, हालांकि एक और स्क्रीन केवल मुद्रा प्रतीक प्रदर्शित करती है। मुद्रा कोड और प्रतीक दोनों को संग्रहीत करने के बजाय, क्या कोड से प्रतीक प्राप्त करना संभव है? मैंने सोचा था कि निम्नलिखित काम हो सकता है, लेकिन यह सिर्फ $ के रूप में प्रतीक रिटर्न:मुद्रा कोड से मुद्रा प्रतीक प्राप्त करना संभव है?

currencyCode = [dictPrices valueForKey:@"currencyCode"]; 
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[numberFormatter setCurrencyCode:currencyCode]; 
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

NSString *currencySymbol = [numberFormatter currencySymbol]; 

उत्तर

5

आप स्थान, न कि वह कोड की स्थापना करना चाहते हैं। फिर आपको फॉर्मेटर्स गुणों से अपेक्षित परिणाम मिलेंगे (या उन्हें ट्वीक करें)। आप लोकेल ऑब्जेक्ट से ही मुद्रा प्रतीक जैसी चीजें प्राप्त कर सकते हैं। तो, उदाहरण के लिए, यदि आप एक नंबर JPY में जापान के लिए स्वरूपित प्रदर्शित गया:

NSLocale* japanese_japan = [[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease]; 
NSNumberFormatter *fmtr = [[[NSNumberFormatter alloc] init] autorelease]; 
[fmtr setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[fmtr setLocale:japanese_japan]; 

अब अपना नंबर संरूपक को आपके मुद्रा प्रतीक और प्रारूप निर्दिष्ट स्थान में नियमों के अनुसार के लिए सही प्रतीकों देना चाहिए।

+0

बहुत बढ़िया है, धन्यवाद! –

6

आप मुद्रा कोड के साथ संख्या से मुद्रा प्रतीक के साथ संख्या प्राप्त कर सकते हैं।

NSString *currencyCode = @"HKD"; 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setCurrencyCode:currencyCode]; 
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

    cell.amountLabel.text = [numberFormatter stringFromNumber: expense.exAmount]; 
0

निम्नलिखित कोड किसी दिए गए CurrencyCode

- (NSString*)getCurrencySymbolFromCurrencyCode:(NSString*)currencyCode { 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    [formatter setCurrencyCode:currencyCode]; 
    [formatter setMaximumFractionDigits:0]; 
    NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:0]]; 
    [formatter release]; 
    return [string substringFromIndex:1]; 
} 
+1

'NSNumberFormatter' में' currencySymbol' संपत्ति है। – pr1001

0

मैं वास्तव में यह इस तरह से करना होगा के लिए केवल CURRENCYSYMBOL वापस आ जाएगी:

इस तरह से मैं क्या करते हैं। आप यह कर का फैसला करते हैं के रूप में SveinnV ने कहा कि यह हो सकता है कि प्रतीक 0 राशि से पहले जगह है और फिर तुम सिर्फ प्रतीक के रूप में @"0" हो रही है:

- (NSString *) currencySymbolForCurrencyCode:(NSString *) currencyCode 
{ 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    [formatter setMaximumFractionDigits:0]; 

    [formatter setCurrencyCode:currencyCode]; 

    NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:0]]; 
    NSArray *components = [string componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]]; 

    return [components firstObject]; 
} 
+0

न केवल अंक के बाद प्रतीक हो सकता है, प्रतीक के पहले या बाद में एक स्थान हो सकता है, इसलिए दोनों सफेद जगहों और अंकों को छीनना बेहतर है। – villapossu

0
NSNumberFormatter * formatter = [NSNumberFormatter new]; 
formatter.numberStyle = NSNumberFormatterCurrencyStyle; 

NSString * localeIde = [NSLocale localeIdentifierFromComponents:@{NSLocaleCurrencyCode: currencyCode}]; 
formatter.locale = [NSLocale localeWithLocaleIdentifier:localeIde]; 

NSString * symbol = formatter.currencySymbol; 
संबंधित मुद्दे