从Objective-C中的货币代码中获取货币符号

时间:2014-11-08 15:07:36

标签: ios objective-c iphone localization currency

我无法从货币代码中获取货币符号(例如' $')(例如' USD')。

我目前正在尝试这种方式:

NSString *code = [NSLocale ISOCurrencyCodes][indexPath.row];
NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleCurrencySymbol value:code]);

接收(null)作为结果...寻找从货币代码中获取货币符号的正确方法。

即使我还没有看到结果,我很确定这会重复输入(例如欧元区国家会重复,并最终会许多不同的符号)。有没有更好的方法解决这个问题?

编辑:我没有遇到NSNumberFormatter的问题,我需要的是iOS中支持的所有货币列表,供用户选择一个(I将使用NSNumberFormatter处理正确货币的格式,而不会遇到麻烦。

由于

2 个答案:

答案 0 :(得分:4)

我无法重现您的问题。以下工作正常:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    for (NSString *code in [NSLocale ISOCurrencyCodes]) {
      NSLog(@"%@ -> %@", code, [[NSLocale currentLocale] displayNameForKey:NSLocaleCurrencySymbol value:code]);
    }
  }
  return 0;
}

我怀疑你的问题是indexPath.row并不是你所期望的。

你不应该期待很多重复(如果有的话)。货币代码列表不列出国家/地区;它列出了货币。所以只有一欧元映射到欧元。在我的系统上,除了两个以外的所有解析(EQE和LSM都是已停止的货币)。

请注意,我所查看的列表中有299种不同的货币,因此您的选择清单可能比您想的要长得多。

答案 1 :(得分:0)

我不知道你是否已经明白了这一点。

我在模拟器上运行的类似问题,但不是设备。如果您在模拟器上运行,请查看手动设置语言和区域是否有帮助。我注意到这是特定的,当你的计划依赖于&#34;系统语言&#34;和&#34;系统区域&#34;。如果我手动将语言设置为&#34;英语&#34;和地区到&#34;美国&#34;它可以再次确定货币符号。

执行此操作的步骤:

点击您的计划 - &gt;点击&#34;编辑方案&#34; - &GT;确保您已在侧栏中选择了运行选项 - &gt; &#34;选项&#34; - &GT;应用程序语言和应用程序区域设置为非默认系统。

如果有帮助,请告诉我。