Localizar moneda para iPhone

Me gustaría que mi aplicación de iPhone permita la entrada, visualización y almacenamiento de cantidades de moneda utilizando el símbolo apropiado ($, €, ₤, ¥, etc.) para el usuario.

¿NSNumberFormatter haría todo lo que necesito? ¿Qué sucede cuando un usuario cambia su configuración regional y estos importes (dólares, yen, etc.) se almacenan como NSDecimalNumbers? Supongo que, para estar seguro, es necesario capturar de algún modo la configuración regional en el momento de la entrada y luego el símbolo de moneda y almacenarlos en mi instancia junto con NSivarNúmero ivar para que puedan desenvolverse y mostrarse adecuadamente en el futuro si el usuario cambia su configuración regional desde el momento en que se creó el elemento?

Lo siento, tengo poca experiencia en localización, así que espero un par de consejos rápidos antes de sumergirme. Por último, ¿alguna idea sobre cómo manejar este tipo de entrada dadas las limitaciones de los teclados del iPhone?

NSNumberFormatter es definitivamente el camino a seguir. Puede establecer un NSLocale en NSNumberFormatter, el formateador se comportará automáticamente de acuerdo con esa configuración regional. La configuración regional predeterminada para un formateador de número es siempre la moneda para el formato de región seleccionado por el usuario.

NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"5.00"]; NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; NSLog(@"%@", [currencyFormatter stringFromNumber:someAmount]); 

Esto registrará la cantidad ‘5.00’ de acuerdo con el formato de región predeterminado de los usuarios. Si desea modificar la moneda, puede configurar:

 NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier: "nl-NL"] [currencyFormatter setLocale:aLocale]; 

Que elegirá la moneda predeterminada para esa configuración regional.

A menudo, aunque no está cargando en la moneda local de su usuario, sino en la suya. Para obligar a NSNumberFormatter a formatear en su moneda, manteniendo el formato del número en la preferencia del usuario, use:

 currencyFormatter.currencyCode = @"USD" currencyFormatter.internationalCurrencySymbol = @"$" currencyFormatter.currencySymbol = @"$" 

En en-US esto formateará como $5.00 en nl-NL es $ 5,00 .