我将我的货币值存储在NSDecimalNumbers中(如本论坛上多个其他线程所推荐的那样),并使用NSNumberFormatter正确显示它们并处理文本输入。都好!但是,当我将iPhone首选项常规设置下的区域格式更改为美国以外的某个地方时,比如德国,然后查看我的应用程序,我的所有数字都从$更改为€。因此,最初输入为“$ 100.00”的金额现在显示为“100,00€”。
这很糟糕。因为,遗憾的是,美元不再与欧元相同 - 甚至不接近:-(但是,我离题了......最终,我不是在寻找转换。我只是想显示金额在货币最初是用。创建的。
Cocoa如何确保这些数字在用户环球旅行时正确格式化?我不想将我的应用程序的有用性限制为单一货币...
答案 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];