2016-01-09 50 views
0

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

用于开实体店的模式是用来 创建存储

我明白发生这种情况的一个不兼容的,因为新的车型配置实体与相同但我怎样才能解耦它?
在数据模型中创建新配置不起作用,因为实体不能从默认配置中删除。
任何想法如何使NSPersistentDocument忽略新的实体并继续使用旧的数据模型?

我不发布源代码,因为这种情况简单地增加新的模型和实体项目

回答

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]; 
+0

哇,我完全错过了API描述,它工作正常,谢谢! – dafi