如何从货币代码获取NSLocale?
我正在尝试这个:
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
它创建 NSLocale 对象,但它不包含任何区域信息。例如,
[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];
返回nil;
知道如何从货币代码获取 NSLocale 吗?
I am trying this:
NSDictionary *components = [NSDictionary dictionaryWithObject:@"USD" forKey:NSLocaleCurrencyCode];
NSString *localeIdentifier = [NSLocale localeIdentifierFromComponents:components];
NSLocale *localeForDefaultCurrency = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
It creates NSLocale object but it does`t contain any regional information. For example,
[localeForDefaultCurrency objectForKey:NSLocaleCountryCode];
returns nil;
Any idea how to get NSLocale from currency code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正如某些来宾在pastebin 中发布的:
As posted by some Guest in pastebin:
有一些技巧,例如使用 id 创建区域设置,但不是像“en_US”这样的正常区域设置 id,而是传递货币代码“USD”、“EUR”等,它似乎适用于欧元和美元,我可以检查它,但是这个恕我直言,这是错误的方式。
我知道的唯一正确的方法是获取所有语言环境,然后循环检查它们的货币代码以与您拥有的货币代码进行比较。这样,当您找到代码时,您将停止循环。
There are tricks like creating locale with id but instead of normal locale id like "en_US" pass it currency code "USD", "EUR", etc., It seems to work for eur and usd in a way I could check it but this is wrong way IMHO.
The only right way I know is to get all locales and then in loop check their currency codes to compare with one you have. This way you will stop the loop when you find your code.
您可以在 Swift 中使用扩展的强大功能:
这样,在代码中的任何位置:
You can use the power of extensions in Swift:
In this way, anywhere in your code: