Управление версиями постоянного ключа с архивом?

Для моего текущего приложения я использую подход NSKeyedArchiver, чтобы сохранять свои объекты на iPhone между запусками. Мне интересно, имеет ли смысл помечать этот файл, когда он создается с номером версии, чтобы в будущем, когда будут обновляться приложения, мы знали, с какими данными мы имеем дело, в случае необходимости миграции. Рекомендуется ли это для чего-то столь же простого, как NSArray пользовательских объектов, которые сериализуются с помощью NSKeyedArchiver? Если да, то как / где спрятать номер версии?

Спасибо!

1 ответ

Решение

Если вы чувствуете, что формат изменится, то да, вам понадобится какой-то способ определить, с какой версией файла вы работаете. Простой способ сделать это (так как вы используете NSArray) состоит в том, чтобы просто добавить номер версии в качестве номера NSN в начало или конец массива. В качестве альтернативы, для более сложного подхода, который фактически не меняет файлы, вы можете хранить информацию в отдельном файле (скажем, используя NSDictionary, который связывает имя файла и номер версии). Или вы можете использовать систему по умолчанию пользователя, чтобы сохранить ее, и, если это более старая версия, обновить файл и ключ пользователя по умолчанию.

Я бы не стал использовать второй метод, если только вы не имеете дело с несколькими файлами ключей. Из этих трех я бы, вероятно, выбрал последнее, но может быть какой-то другой способ сделать это, который имеет больше смысла.

Другие вопросы по тегам