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

Fdo*_*Fdo 2 iphone localization currency objective-c ios

我无法从货币代码(例如“美元”)中获取货币符号(例如“$”)。

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

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

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

即使我还没有看到结果,我很确定这会给出重复的条目(例如,欧元区国家将被重复,最终会出现许多不同的“€”符号)。有没有更好的方法来解决这个问题?

编辑:我对 NSNumberFormatter 没有问题,我需要的是iOS 中支持的所有货币列表,供用户选择一种(我将使用 NSNumberFormatter 处理正确货币的格式,没有问题)。

谢谢

Rob*_*ier 5

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

我怀疑你的问题indexPath.row不是你期望的那样。

你不应该期望有很多重复(如果有的话)。货币代码列表没有列出国家;它列出了货币。所以只有一个 EUR 映射到 €。在我的系统上,除了两个解决方案(EQE 和 LSM 是已停产的货币)。

请记住,我正在查看的列表中有 299 种不同的货币,因此您的选择列表可能比您想象的要长得多。