是否有可能从货币代码中获得货币符号?

Dav*_*unt 6 iphone currency objective-c

我的iPhone应用程序使用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];
Run Code Online (Sandbox Code Playgroud)

zgj*_*jie 6

您可以使用货币代码从带号码的货币符号中获取号码.

这就是我的方式:

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

    cell.amountLabel.text = [numberFormatter stringFromNumber: expense.exAmount];
Run Code Online (Sandbox Code Playgroud)


Jas*_*oco 5

您想要设置区域设置,而不是货币代码.然后,您将从格式化程序属性中获得预期结果(或调整它们).您还可以从区域设置对象本身获取货币符号等内容.因此,例如,如果您在JPY中显示为日本格式化的数字:

NSLocale* japanese_japan = [[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease];
NSNumberFormatter *fmtr = [[[NSNumberFormatter alloc] init] autorelease];
[fmtr setNumberStyle:NSNumberFormatterCurrencyStyle];
[fmtr setLocale:japanese_japan];
Run Code Online (Sandbox Code Playgroud)

现在,您的数字格式化程序应根据指定语言环境中的规则为您提供货币符号和格式的正确符号.