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
これをコマンドライン(Foundation)アプリとして構築しようとしていますか、それとも従来とは異なるMacのようなものとして構築しようとしていますか?
NSLocale
パラメータとして渡された指定されたコンポーネントキー- objectForKey:
に対応するオブジェクトを返す
というメソッドがあります。NSLocale
Swift 2.2では- objectForKey:
、次の宣言があります。
func objectForKey(_ key: AnyObject) -> AnyObject?
多くのNSLocale
コンポーネントキーの中で、Appleは次のように述べていNSLocaleCurrencyCode
ます。
ロケールに関連付けられている通貨コードのキー。対応する値は
NSString
オブジェクトです。たとえば、「USD」。
NSLocale
したがって、次のSwift2.2およびSwift3コードスニペットを使用して、インスタンスにリンクされている通貨コードを取得できます。
スウィフト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"