В моем приложении для iPhone я использую NSDecimalNumber
для хранения некоторых значений курсов валют.
Я извлекаю данные из Интернета при первом запуске приложения, а затем снова, когда они устаревают, и сохраняю их в NSDictionary
; тогда я использую writeToFile:atomically:
.
Когда приложение запускается впервые, мой метод конвертации тарифов работает нормально. Тем не менее, когда я запускаю приложение во второй раз, и ставки загружаются с -(NSDictionary*) initWithContentsOfFile:
, методы конвертации перестают работать, и я получаю странные результаты.
Я выполнил некоторую отладку с контрольными точками в инкриминированном методе и обнаружил, что данные по ставкам рассматриваются как NSCFNumber
, а не NSDecimalNumber
. Похоже, что initWithContentsOfFile
не назначает правильный класс моим объектам. Для записи фактическое значение этих объектов, как показано в методе description
, соответствует ожидаемому значению ставки.
Я также проверил файл plist, сгенерированный writeToFile:atomically:
, и увидел, что ставки хранятся как real
; Интересно, это правильный тип?
Есть идеи, что происходит?
Заранее спасибо,
Davide