【问题标题】:Can I get the code for the local currency from an NSLocale?我可以从 NSLocale 获取当地货币的代码吗?
【发布时间】:2011-11-14 18:06:06
【问题描述】:

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

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

但 currencyCode 返回为 nil(我想要“EUR”或类似名称)。

【问题讨论】:

  • 这对我有用。这不是内存问题吗?

标签: objective-c ios nslocale


【解决方案1】:

您的代码在普通的 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 类应用程序?

【讨论】:

  • iPhone,而不是 Mac。会这样吗?
  • 我的 iPhone 上运行相同的代码,西蒙。尝试将这些代码行放到一个全新的 iPhone 应用程序中(就像我刚刚做的那样),只是为了测试,你应该会看到它们确实为你工作。我认为您的 iPhone 应用程序正在发生其他事情。您应该从这个问题中删除“osx”标签,b.t.w。 :-)
  • 顺便说一句,语言环境是自动发布的,所以你的最后一行不是双重发布吗?
  • 啊 - 发现我的错误;我实际上是在将 @"fr" 而不是 @"fr_FR" 传递给 initWithLocaleIdentifier:。适合我不发布我的完整代码。
  • 在我的情况下,我必须动态获取它,所以使用NSLocale *locale = [NSLocale currentLocale]; 其余都是一样的......谢谢+1
【解决方案2】:

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

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

在众多NSLocale component keys 中,Apple 声明了NSLocaleCurrencyCode

与语言环境相关的货币代码键。对应的值是一个NSString 对象;例如,“美元”。


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

斯威夫特 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"

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2019-08-27
    相关资源
    最近更新 更多