从NSPersistentDocument中排除实体

时间:2016-01-09 08:49:03

标签: core-data nspersistentdocument

我有一个使用NSPersistentDocument的现有(且完全正常)的应用程序来保存应用程序文件 现在我需要创建一个新实体,这个新实体与应用程序文件完全无关,它将包含应用程序缓存,因此我将使用它来保存一个单独的文件。
我的项目包含MyDocument.xcdatamodeld使用的NSPersistentDocument,以实现我创建新数据模型Cache.xcdatamodeld的新功能,并为模型添加了一个新实体(我还没有编写代码只使用XCode向导)但是当我运行应用程序并尝试打开现有的应用程序文件时,我收到错误

  

用于打开商店的模型与以前的模型不兼容   创建商店

我理解这是因为新实体的模型配置与NSPersistentDocument相同,但我该如何将其解耦?
在数据模型中创建新配置不起作用,因为无法从默认实体中删除实体 知道如何让NSPersistentDocument忽略新实体并继续使用旧数据模型吗?

我不发布源代码,因为这只是将新模型和实体添加到项目

1 个答案:

答案 0 :(得分:1)

来自NSPersistDocument's managedObjectModel property的文档:

  

@property(readonly, strong) NSManagedObjectModel *managedObjectModel

     

讨论

     

默认情况下,Core Data框架从应用程序包中的所有模型创建合并模型([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];