从NSPersistentDocument中排除实体



我有一个现有的(完全可用的)应用程序,它使用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];

最新更新