应用程序的 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)
显然,有些数据会丢失,需要填写。例如。需要为之前存在的每个“居民数量”创建一个基本的“居住者”对象。我正在寻找的是一种以编程方式加载先前数据模型的方法,特别是如果我只有一个类/层次结构列表,而不是 .m/.h 文件本身。
所以我想做的是(假设我有一个文件 Houses.data,它是使用 Houses 数组序列化的):
NSFile *legacyFile;
Neighborhood *hood = [Neighborhood neighborhoodFromLegacyFile:legacyFile];
有任何想法吗?