我有一个现有的(完全可用的)应用程序,它使用NSPersistentDocument
来保存应用程序文件
现在我需要创建一个新实体,这个新实体与应用程序文件完全无关,它将包含应用程序缓存,所以我将使用它保存在一个单独的文件上
我的项目包含NSPersistentDocument
使用的MyDocument.xcdatamodeld
,为了实现新功能,我创建了一个新的数据模型Cache.xcdatamodeld
,并向模型中添加了一个新实体(我没有编写代码,只是使用了XCode向导),但当我运行应用程序并尝试打开现有的应用程序文件时,我收到错误
用于打开商店的模型与用于创建存储
我理解发生这种情况是因为新实体的模型配置与NSPersistentDocument
相同,但我如何将其解耦
在数据模型中创建新配置不起作用,因为无法从默认配置中删除实体
知道如何让NSPersistentDocument
忽略新的实体并继续使用旧的数据模型吗?
我不发布源代码,因为这只是简单地将新模型和实体添加到项目
来自NSPersistDocument的managedObjectModel
属性的文档:
@property(readonly, strong) NSManagedObjectModel *managedObjectModel
讨论
默认情况下,核心数据框架从应用程序捆绑包([NSBundle mainBundle])中的所有模型创建一个合并模型。您可以重新实现此属性并返回用于创建持久存储的特定模型。一个典型的实现可能包括类似于以下片段的代码:
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *path = [bundle pathForResource:@"MyModel" ofType:@"mom"];
NSURL *url = [NSURL fileURLWithPath:path];
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];