9

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

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

但是 currencyCode 以 nil 的形式返回(我想要“EUR”或类似的)。

4

2 回答 2

20

您的代码在普通的 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

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

于 2011-11-14T19:55:51.950 回答
0

NSLocale有一个被调用的方法- objectForKey:,它返回一个对应于 NSLocale作为参数传递的指定组件键的对象。使用 Swift 2.2,- objectForKey:具有以下声明:

func objectForKey(_ key: AnyObject) -> AnyObject?

在众多NSLocale组件键中,Apple 声明NSLocaleCurrencyCode

与区域设置关联的货币代码的键。对应的值是一个NSString对象;例如,“美元”。


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

斯威夫特 2.2

import Foundation

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

斯威夫特 3

import Foundation

let locale = Locale(localeIdentifier: "fr_FR")
//let locale = Locale.current
let localeCurrencyCode = locale.object(forKey: Locale.Key.currencyCode) as! String
print(localeCurrencyCode) // prints "EUR"
于 2016-07-13T15:42:45.070 回答