У нас уже есть игра, в которой есть функция сохранения / загрузки с использованием NSCoding во всех классах.Сейчас мы работаем над следующей версией, но прежде чем мы это сделаем, нам нужно провести рефакторинг кода, чтобы он имел лучшую производительность и было легче реализовать будущие функции (это может сильно измениться).
Проблема после рассмотрения нового дизайна.Иерархия NSCoding отличается от предыдущей версии.
v1.0 GameSavedFile (с использованием NSKeyedArchiver) -> UserData -> User (родительский элемент UserData) -> набор объектов и примитивов
v1.1 Пользователь (используя NSKeyedArchiver) -> набор объектов и примитивов
v1.1 имеет более простую и понятную структуру.В v1.0 UserData является подклассом пользователя, в то время как в v1.1 мы будем использовать только один класс для всех данных пользователя.
Так проще и практичнее.Тем не менее, как я могу портировать все данные v1.0 на v1.1, не нарушая ничего?Я читал, что есть setClassName: forClass: метод, но я думаю, что он заменяет только старый класс на новый класс.
Самый чистый и безопасный способ, который я мог бы придумать, - это проверить, использует ли игра все ещестарая версия (v1.0).Если это произойдет, преобразуйте иерархию NSCoding в plist / dictionary, а затем разбросайте ее по коду v1.1.
Я открыт для любого возможного предложения / решения, но я предпочту решение, которое уже доступно вОснова основы (если это возможно).
Спасибо.