在我的iPhone应用程序中,我使用NSDecimalNumber
来存储一些货币汇率值。 我第一次启动应用程序时,我从网络上获取数据,然后当它们变得过时时,再次将数据存储在NSDictionary
;然后我使用writeToFile:atomically:
。NSDictionary initWithContentsOfFile:弄乱NSDecimalNumbers,为什么?
当应用程序第一次启动时,我的速度转换方法工作正常。但是,当我第二次启动应用程序时,费率会加载-(NSDictionary*) initWithContentsOfFile:
转换方法停止工作,并且我得到奇怪的结果。
我在导入的方法中对断点进行了一些调试,发现费率数据为NSCFNumber
,而不是NSDecimalNumber
。所以看起来initWithContentsOfFile
不会将正确的类分配给我的对象。为记录,这些对象的实际值(如description
方法中所示)对应于预期的费率值。
我也检查了writeToFile:atomically:
生成的plist文件,看到存储的价格为real
;我想知道这是否是正确的类型。
想知道发生了什么?
由于提前,
达维德
我已经使用了使用字符串存储NSDecimalNumbers的方法,它似乎在保持精度方面做得很好。它看起来像你所能得到的那样接近无损。 – 2009-01-12 15:30:14