如果您只想加载与特定现有商店兼容的模型版本,请尝试:
NSError *error = nil;
NSDictionary *storeMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType
URL:storeURL
error:&error];
NSManagedObjectModel *oldManagedObjectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle mainBundle]]
forStoreMetadata:storeMetadata];
请注意,如果您对数据模型版本使用 XCode 版本标识符,则可以通过存储元数据字典中的 NSStoreModelVersionIdentifiersKey 条目访问持久存储的当前版本标识符。
就加载特定的任意版本而言,mom 文件通常位于应用程序包中的 momd 目录下,因此您可以使用 NSFileManager 枚举它们。我相信要找到具有特定版本标识符的版本,您必须使用 NSManagedObjectModel 的 initWithContentsOfURL: 初始化程序,然后检查 versionIdentifiers 属性,或使用 isConfiguration:compatibleWithStoreMetadata: 实例方法来确定兼容性。