我可以从 NSLocale 获取当地货币的代码吗?我试过这个:
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
NSString *currencyCode = [locale objectForKey:NSLocaleCurrencyCode];
但是 currencyCode 以 nil 的形式返回(我想要“EUR”或类似的)。
我可以从 NSLocale 获取当地货币的代码吗?我试过这个:
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
NSString *currencyCode = [locale objectForKey:NSLocaleCurrencyCode];
但是 currencyCode 以 nil 的形式返回(我想要“EUR”或类似的)。
您的代码在普通的 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 的东西?
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"