我有一个使用NSPersistentDocument
的现有(且完全正常)的应用程序来保存应用程序文件
现在我需要创建一个新实体,这个新实体与应用程序文件完全无关,它将包含应用程序缓存,因此我将使用它来保存一个单独的文件。
我的项目包含MyDocument.xcdatamodeld
使用的NSPersistentDocument
,以实现我创建新数据模型Cache.xcdatamodeld
的新功能,并为模型添加了一个新实体(我还没有编写代码只使用XCode向导)但是当我运行应用程序并尝试打开现有的应用程序文件时,我收到错误
用于打开商店的模型与以前的模型不兼容 创建商店
我理解这是因为新实体的模型配置与NSPersistentDocument
相同,但我该如何将其解耦?
在数据模型中创建新配置不起作用,因为无法从默认实体中删除实体
知道如何让NSPersistentDocument
忽略新实体并继续使用旧数据模型吗?
我不发布源代码,因为这只是将新模型和实体添加到项目
答案 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];