アプリケーションのバージョン 1.0 にはデータ モデルがあり、すべてのモデル クラスが NSCoding プロトコルに準拠しているため、NSKeyed(Un)Archiver クラスを使用して保存/ロードされます。次の階層が存在するとします。
-> 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)
明らかに、一部のデータが欠落しており、入力する必要があります。以前に存在した「居住者の数」ごとに、基本的な「占有者」オブジェクトを作成する必要があります。私が探しているのは、特に .m/.h ファイル自体ではなく、クラス/階層のリストしかない場合に、以前のデータ モデルをプログラムで読み込む方法です。
したがって、私がやりたいことは次のとおりです (Houses 配列を使用してシリアル化されたファイル Houses.data があると仮定します):
NSFile *legacyFile;
Neighborhood *hood = [Neighborhood neighborhoodFromLegacyFile:legacyFile];
何か案は?