在我的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