我可以从NSLocale获取本地货币的代码吗?

时间:2011-11-14 18:06:07

标签: objective-c ios nslocale

我可以从NSLocale获取本地货币的代码吗?我试过这个:

NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
NSString *currencyCode = [locale objectForKey:NSLocaleCurrencyCode];

但是currencyCode回复为nil(我想要“EUR”,或类似的)。

2 个答案:

答案 0 :(得分:19)

您的代码在常规Macintosh应用程序中对我来说非常好。

NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
NSString *currencyCode = [locale objectForKey:NSLocaleCurrencyCode];
NSLog( @"currencyCode is %@", currencyCode );

在控制台中显示:

2011-11-14 14:53:33.784 Testing[26388:707] currencyCode is EUR

您是否正在尝试将其构建为命令行(Foundation)应用程序或非传统类似Mac的应用程序?

答案 1 :(得分:0)

android:layout_width="-1"有一个名为- objectForKey:的方法,它返回与指定对应的对象 NSLocale组件键作为参数传递。使用Swift 2.2,NSLocale具有以下声明:

- objectForKey:

在众多NSLocale component keys中,Apple声明func objectForKey(_ key: AnyObject) -> AnyObject?

  

与区域设置关联的货币代码的键。对应的值是NSLocaleCurrencyCode对象;例如,“USD”。

因此,您可以使用以下Swift 2.2和Swift 3代码段检索链接到NSString实例的货币代码:

Swift 2.2

NSLocale

Swift 3

import Foundation

let locale = NSLocale(localeIdentifier: "fr_FR")
//let locale = NSLocale.currentLocale()
let localeCurrencyCode = locale.objectForKey(NSLocaleCurrencyCode) as! String
print(localeCurrencyCode) // prints "EUR"