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

发布于 2024-12-16 10:27:12 字数 263 浏览 1 评论 0原文

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

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

但是currencyCode返回为零(我想要“EUR”或类似的)。

Can I get the code for the local currency from an NSLocale? I tried this:

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

but currencyCode comes back as nil (I wanted "EUR", or similar).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灼痛 2024-12-23 10:27:12

你的代码在常规的 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 的应用程序?

Your code works perfectly fine for me in a regular Macintosh app.

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

displays this in the console:

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

Are you trying to build this as a command line (Foundation) app or something non-traditional-Mac-like?

听,心雨的声音 2024-12-23 10:27:12

NSLocale 有一个名为 - objectForKey: 返回指定对应的对象
NSLocale 组件键作为参数传递。在 Swift 2.2 中,- objectForKey: 具有以下声明:

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

在众多NSLocale 组件键,Apple 关于 NSLocaleCurrencyCode 的说明:

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


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

Swift 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"

Swift 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"

NSLocale has a method called - objectForKey: that returns an object corresponding to a specified
NSLocale component key passed as a parameter. With Swift 2.2, - objectForKey: has the following declaration:

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

Among the many NSLocale component keys, Apple states about NSLocaleCurrencyCode:

The key for the currency code associated with the locale. The corresponding value is an NSString object; for example, "USD".


Therefore, you can retrieve the currency code linked to a NSLocale instance with the following Swift 2.2 and Swift 3 code snippets:

Swift 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"

Swift 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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文