CoreData持久存储出错

时间:2012-07-13 20:59:10

标签: objective-c core-data nsmanagedobjectcontext nspersistentstore

我正在使用基于CoreData的应用程序并拥有一个AppDelegate类,该类本身是在启动应用程序时编写的。

点击按钮后,我将ArrayController(Section1)传递给子类并解析它以存储TableView Cell值。

- (IBAction)saveSect1:(NSButton *)sender {

DataMiner *data = [[DataMiner alloc] init];
[data parseArrayController:Section1 tag:0];


}

-(void)parseArrayController:(NSArrayController *)myController tag:(NSInteger)arrayTag {

switch (arrayTag) {
    case 0:

        context = appDelegate().self.managedObjectContext;

        for (NSMutableDictionary *mydict in myController.arrangedObjects) {

            NSNumberFormatter *format = [[NSNumberFormatter alloc] init];
            NSNumber *code = [format numberFromString:[mydict objectForKey:@"diagCode"]];
            [format release];

            Section_1 *section = nil;

            section = [NSEntityDescription insertNewObjectForEntityForName:@"Section_1"   inManagedObjectContext:context];

            section.diagCode = code;
            section.diagDescr = [mydict objectForKey:@"diagDescr"];                            
            section.sectId = [NSNumber numberWithDouble:1];
            section.subSectId = [NSNumber numberWithDouble:1.1];

        }

        NSLog(@"%@", context.registeredObjects);

        [Section_1 release];

        break;

    default:
        break;
}

} 最初它运行正常,但现在我收到此错误:

用于打开持久性存储的托管对象模型版本与用于创建持久性存储的版本不兼容。

之前有没有人遇到此错误?有什么建议?感谢。

- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel) {
    return __managedObjectModel;
}

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData_test"        withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}

1 个答案:

答案 0 :(得分:0)

您的桌面型号已更改。您可以删除旧数据库(从设备/模拟器中删除已安装的应用程序)。更改代码中的路径或执行数据库迁移。

通常在开发中我只删除旧安装。 (在模拟器中转到重置内容和设置)如果需要保留已填充的数据,则需要执行迁移。

您需要在更改表格时随时执行此操作。