9

NSLocaleから現地通貨のコードを取得できますか?私はこれを試しました:

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

しかし、currencyCodeはnilとして返されます(「EUR」などが必要でした)。

4

2 に答える 2

20

あなたのコードは、通常の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のようなものとして構築しようとしていますか?

于 2011-11-14T19:55:51.950 に答える
0

NSLocaleパラメータとして渡された指定されたコンポーネントキー- objectForKey:に対応するオブジェクトを返す というメソッドがあります。NSLocaleSwift 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"
于 2016-07-13T15:42:45.070 に答える