我将我的货币值存储在 NSDecimalNumbers 中(正如本论坛上多个其他线程中所建议的那样),并使用 NSNumberFormatter 正确显示它们并处理文本输入。都好!然而,当我将iPhone首选项常规设置下的区域格式更改为美国以外的某个地方(例如德国),然后查看我的应用程序时,我的所有数字都从美元更改为欧元。因此,最初输入的金额“$100.00”现在显示为“100,00 €”。
这很糟糕。因为,可悲的是,美元的值(value)不再与欧元相同 - 甚至没有接近:-(但是,我离题了......最终,我不是在寻找转换。我只是想在它最初创建时使用的货币。
Cocoa 采取什么方式来确保用户在全局旅行时这些数字的格式正确?我不想将我的应用程序的实用性限制为单一货币......
最佳答案
输入值时,您可以获得当前系统 ISO 4217 货币代码并将其与数字一起存储(它只是一个字符串):
NSString* currencyCode = [[[[NSNumberFormatter alloc] init] autorelease] currencyCode];
显示数据时,在 NSNumberFormatter 上设置此货币代码:
// NSNumberFormatter* formatter = [[[[NSNumberFormatter alloc] init] autorelease] setCurrencyCode:currencyCode];
编辑代码中的拼写错误:
NSNumberFormatter* formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setCurrencyCode:currencyCode];
关于cocoa - 在可以轻松更改区域格式的设备上保留 Cocoa 中的货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062369/