objective-c - Today Extension 用于打开商店的模型与用于使用 userInfo 字典创建商店的模型不兼容

标签 objective-c core-data ios8

我正在尝试创建 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/

相关文章:

objective-c - 尝试调试 'Assertion failure in -[UIActionSheet showInView:]' 错误

ios - 核心数据 TableView 异常崩溃

objective-c - 何时使用静态字符串与 #define

ios - 在 iOS 上流式传输 RTSP 时接收 "End of file"

objective-c - 从数据模型创建用户界面

ios - Restkit 创建重复项(错误 : "Managed object cache returned 2 objects") only on device, 不在模拟器中

ios - 如何在 IOS 8 Autolayout 中安装/复制大小类的所有约束到另一个

swift - 在 swift iOS8 中切换 UIBlurEffect

swift - 快速添加 UIBarButton 项目

ios - applicationWillTerminate 进入后台