实施核心数据的“自动轻量级迁移”(iPhone)

当我向核心数据模型添加新属性时,我希望使我的应用程序能够进行自动的轻量级迁移。


在Apple的指南中,这是我可以找到的关于该主题的唯一信息:


自动轻量级迁移


要请求自动轻量级迁移,您可以在addPersistentStoreWithType:configuration:URL:options:error:中传递的选项字典中设置适当的标志。您需要将与NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption键对应的值设置为YES:


NSError *error;

NSURL *storeURL = <#The URL of a persistent store#>;

NSPersistentStoreCoordinator *psc = <#The coordinator#>;

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];


if (![psc addPersistentStoreWithType:<#Store type#>

    configuration:<#Configuration or nil#> URL:storeURL

    options:options error:&error]) {

    // Handle the error.

}

我NSPersistentStoreCoordinator是这样初始化的:


- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {


    if (persistentStoreCoordinator != nil) {

        return persistentStoreCoordinator;

    }


    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"FC.sqlite"]];


    NSError *error = nil;

    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {


        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

        abort();

    }    


    return persistentStoreCoordinator;

}

我在查看应该在哪里以及如何添加Apple代码以使自动轻量级迁移正常工作时遇到麻烦?


千巷猫影
浏览 459回答 3
3回答

跃然一笑

起初,上述解决方案对我不起作用。返回的managedObjectModel为0x0。我认为这是因为我重命名了不同模型文件的文件名。如果您按照上述说明进行操作,那么这一切都将起作用。但是,如果您确实更改了模型文件名,则可以手动选择“当前”模型文件:假设您的原始模型文件是MYMODEL.xcdatamodel,在执行上方的添加模型步骤后将变为目录MY.xcdatamodeld,而在该目录下面MYMODEL.xcdatamodel和MYMODEL 2.xcdatamodel将新模型文件重命名为所需的名称,例如,假设您删除了MYMODEL2.xcdatamodel的空间并编辑其内容。现在在上面的代码中NSString *path = [mainBundle pathForResource:@"MYMODEL2" ofType:@"mom" inDirectory:@"MYMODEL.momd"];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS