在Cocoa中保留货币格式,这种格式很容易改变区域格式

时间:2009-06-30 08:09:58

标签: cocoa cocoa-touch currency

我将我的货币值存储在NSDecimalNumbers中(如本论坛上多个其他线程所推荐的那样),并使用NSNumberFormatter正确显示它们并处理文本输入。都好!但是,当我将iPhone首选项常规设置下的区域格式更改为美国以外的某个地方时,比如德国,然后查看我的应用程序,我的所有数字都从$更改为€。因此,最初输入为“$ 100.00”的金额现在显示为“100,00€”。

这很糟糕。因为,遗憾的是,美元不再与欧元相同 - 甚至不接近:-(但是,我离题了......最终,我不是在寻找转换。我只是想显示金额在货币最初是用。创建的。

Cocoa如何确保这些数字在用户环球旅行时正确格式化?我不想将我的应用程序的有用性限制为单一货币...

1 个答案:

答案 0 :(得分:3)

输入值时,您可以获取当前系统ISO 4217 currencyCode并将其与数字一起存储(它只是一个字符串):

NSString* currencyCode = [[[[NSNumberFormatter alloc] init] autorelease] currencyCode];

显示数据时,请在NSNumberFormatter上设置此currencyCode:

// NSNumberFormatter* formatter = [[[[NSNumberFormatter alloc] init] autorelease] setCurrencyCode:currencyCode];

编辑代码中的拼写错误:

NSNumberFormatter* formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setCurrencyCode:currencyCode];