У меня возникают проблемы с NSKeyedArchiver и NSKeyedUnarchiver, когда свойства объекта меняются между процессом архивирования и разархивирования. Вот конкретный пример:
У меня есть класс, скажем, Task
, и у него есть атрибуты name
и desc
, оба типа NSString
. Теперь я архивирую с помощью NSKeyedArchiver archivedDataWithRootObject
и записываю в файл. Позже я могу прочитать его из файла и использовать NSKeyedUnarchiver unarchiveObjectWithData(data)
, чтобы вернуться туда, где я хочу быть. Проблема возникает, когда Task
приобретает новое свойство и, что еще интереснее, теряет одно.
Итак, теперь у Task
есть name
, то есть NSString
, но desc
отсутствует. Далее добавляю свойство dateDue
типа NSDate
. А потом запустить симулятор. Проблема в том, что разархивировано старое Task
со старым свойством desc
, но не новое dateDue
.
Мой initFromCoder
фактически учитывает случай, когда свойство отсутствует в текущем классе, и не пытается его декодировать.
Есть ли способ объяснить методам NSCoder не создавать мне точную копию объекта, как это было, когда я его сериализовал (я понял, что это часть определения сериализации/десериализации), а скорее предоставить мне гибкость для версии Это?
Спасибо