-1

我正在使用基于 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;
}
4

1 回答 1

0

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

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

每当您更改表时,您都需要这样做。

于 2012-07-13T21:03:52.813 回答