为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

iOS
千巷猫影 2019-11-08 10:31:59
当我向核心数据模型添加新属性时,我希望使我的应用程序能够进行自动的轻量级迁移。在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代码以使自动轻量级迁移正常工作时遇到麻烦?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

起初,上述解决方案对我不起作用。返回的managedObjectModel为0x0。我认为这是因为我重命名了不同模型文件的文件名。如果您按照上述说明进行操作,那么这一切都将起作用。


但是,如果您确实更改了模型文件名,则可以手动选择“当前”模型文件:假设您的原始模型文件是MYMODEL.xcdatamodel,在执行上方的添加模型步骤后将变为目录MY.xcdatamodeld,而在该目录下面MYMODEL.xcdatamodel和MYMODEL 2.xcdatamodel将新模型文件重命名为所需的名称,例如,假设您删除了MYMODEL2.xcdatamodel的空间并编辑其内容。现在在上面的代码中


NSString *path = [mainBundle pathForResource:@"MYMODEL2" ofType:@"mom" inDirectory:@"MYMODEL.momd"];


查看完整回答
反对 回复 2019-11-08
  • 3 回答
  • 0 关注
  • 458 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信