Управление версиями постоянного архива с ключами?
-
18-09-2019 - |
Вопрос
Для моего текущего приложения я использую подход NSKeyedArchiver для сохранения моих объектов на iPhone между запусками.Мне интересно, имеет ли смысл помечать этот файл при его создании номером версии, чтобы в будущем, когда приложение обновится, мы знали, с какими данными мы имеем дело, если потребуется миграция.Рекомендуется ли это для чего-то простого, например NSArray пользовательских объектов, сериализованных с помощью NSKeyedArchiver?Если да, то как/где спрятать номер версии?
Спасибо!
Решение
Если вы чувствуете, что формат изменится, то да, вам понадобится какой-то способ определить, с какой версией файла вы работаете.Простой способ сделать это (поскольку вы используете NSArray) — просто добавить номер версии в виде NSNumber либо в начало, либо в конец массива.Альтернативно, для более сложного подхода, который фактически не меняет файлы, вы можете сохранить информацию в отдельном файле (скажем, используя NSDictionary, который связывает имя файла и номер версии).Или вы можете использовать систему пользовательских настроек по умолчанию для ее хранения, и, если она взята из более старой версии, обновить файл и ключ пользовательских настроек по умолчанию.
Я бы не стал использовать второй метод, если только вы не имеете дело с файлами данных с несколькими ключами.Из этих трех я бы, вероятно, выбрал последнее, но, возможно, есть другой способ сделать это, который имеет больше смысла.