Приложение версии 1.0 имеет модель данных, которая сохраняется / загружается с использованием классов NSKeyed (Un) Archiver, поскольку все классы модели придерживаются протокола NSCoding. Скажем, существует следующая иерархия:
-> Houses (NSMutableArray)
-> -> House (Custom Object)
-> -> -> Color (3 ints, RGB)
-> -> -> Number of Residents (int)
Скажите, что существуют устаревшие файлы, которые хранятся таким образом, но их необходимо загрузить в версию 2.0 приложения для обратной совместимости, используя следующую более новую модель данных:
-> Neighborhood (Maintains NSMutableArray, among other properties)
-> -> TownHouse
-> -> -> Color (3 ints, RGB)
-> -> -> Occupants (NSMutableArray)
-> -> (Other types of houses)
Очевидно, что некоторые данные будут отсутствовать и должны быть заполнены. Например. базовый объект «Occupant» должен быть создан для каждого из «числа жителей», которые существовали ранее. Мне нужен способ программной загрузки в предыдущей модели данных, особенно если у меня есть только список классов / иерархий, а не сами файлы .m / .h.
Итак, что я хочу сделать (при условии, что у меня есть файл Houses.data, который был сериализован с использованием массива Houses):
NSFile *legacyFile;
Neighborhood *hood = [Neighborhood neighborhoodFromLegacyFile:legacyFile];
Есть идеи?