2014-07-14 15 views
8

La mia applicazione consente all'utente di selezionare varie valute per il tracciamento delle spese. Ho un'etichetta che mostra l'importo con il simbolo di currecy. Sto usando NSNumberFormatter con kCFNumberFormatterCurrencyStyle per formattare la stringa di quantità e visualizzarla nell'etichetta;Simbolo valuta NSNumberFormatter

numberFormatter = [[NSNumberFormatter alloc] init]; 
numberFormatter.numberStyle = kCFNumberFormatterCurrencyStyle; 
numberFormatter.currencyCode = @"EUR"; 

Il mio obiettivo è quello di visualizzare il simbolo di valuta con colore differente, in modo da sto usando NSAttributedString, cercando di trovare gamma simboli e impostare gli attributi diversi ad esso. Il problema è che il formattatore tornare simbolo sbagliato quando ho initilizing la stringa attribuito:

MLOG(@"internationalCurrencySymbol %@", numberFormatter.internationalCurrencySymbol); 
MLOG(@"currencySymbol %@", numberFormatter.currencySymbol); 
MLOG(@"currencyCode %@", numberFormatter.currencyCode); 

//logs: 
//USD 
//$ 
//EUR 

ma quando l'etichetta viene visualizzata sullo schermo vedo corretto simbolo dell'euro:

Qualcuno sa come si può ottenere il simbolo della valuta per un determinato codice valuta?

risposta

8

Ho appena testato il codice. Se si esegue le dichiarazioni di registro subito dopo la definizione del numero di formattatore il modo in cui l'avete fatto, l'uscita è

@"EUR" 
@"€" 
@"EUR" 

Si noti che il simbolo di valuta internazionale e simbolo di valuta sembrano dipendere il locale impostato nel vostro sistema. Ma si può facilmente cambiare le impostazioni internazionali per il formattatore come questo:

numberFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]; 

Probabilmente sarebbe meglio per non impostare il currencySymbol a tutti. Quindi, quando il locale è, ad esempio, la Tailandia (@"th_TH"), ottieni

numberFormatter.internationalCurrencySymbol "THB" 
numberFormatter.currencySymbol    "฿" 
numberFormatter.currencyCode     "THB" 
+0

qual è il tuo locale corrente? –

+0

Vedo, quindi se sei in en_US, non funziona –

+0

Sbagliato. È possibile impostare le impostazioni internazionali per il formattatore come spiegato sopra. – Mundi

Problemi correlati