我正在尝试创建 iOS Today 扩展。我想连接到主要应用程序 CoreData SQL DB。但是,当我尝试连接时收到此错误。
“用于打开商店的模型与用于使用 userInfo 字典创建商店的模型不兼容”
Accessing Core Data SQL Database in iOS 8 Extension
数据库创建完成,我可以插入记录等。 我的扩展 Controller 代码现在使用与应用程序委托(delegate)中的 CoreData 代码类似的代码。
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
// -- Changed for Today Screen --//
//NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
// stringByAppendingPathComponent: @"CoreDB_2014.sqlite"]];
NSURL *storeUrl = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.THISAPP.APPNAME"];
NSLog(@"StoreURL1: %@", storeUrl);
storeUrl = [storeUrl URLByAppendingPathComponent:@"CoreDB_2014A.sqlite"];
NSLog(@"StoreURL2: %@", storeUrl);
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
}
return persistentStoreCoordinator;
}
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
该错误非常不言自明:这意味着您更改了核心数据模型,使其不再与用于创建您尝试打开的持久存储文件的模型相匹配。这些必须匹配。如果更改模型,则需要 (a) 使用多个模型版本并执行到新模型的迁移,或 (b) 使用不同的持久存储文件(或删除现有文件并重新开始)。
在开发应用程序时,核心数据模型经常会发生变化。在大多数情况下,对于预发布的应用程序,开发人员将使用选项(b)并删除以前的测试数据。如果这不可行,您需要进行模型版本控制和迁移以就地更新数据存储。
关于objective-c - Today Extension 用于打开商店的模型与用于使用 userInfo 字典创建商店的模型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089372/