gpt4 book ai didi

cocoa - 核心数据的多个版本之间的迁移

转载 作者:行者123 更新时间:2023-12-03 16:11:59 28 4
gpt4 key购买 nike

我有核心数据应用程序,并且我一直在迁移(升级)核心数据模型。每次创建新版本时,我都会为每个版本创建一个映射模型。现在我有 16 个版本,并且我的映射模型如下所示:1to2.xc映射模型2to3.xcmapping模型3to4.xcmapping模型...ETC。最多 16 个

这工作正常,但当一个用户拥有版本 10 的数据文件并更新版本 16 的应用程序时,就会出现问题。我认为 Core Data 会自动从 10 升级到 16,但显示错误说“缺少映射模型”。为了确保映射模型正确,我将其一一升级到每个版本(10 到 11、11 到 12 等..)并且它确实有效......这是我的代码。

我使用以下代码指定模型版本:

NSBundle *modelWrapper = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TaskApp_DataModel" ofType:@"momd"]];
NSString *modelPath = [modelWrapper pathForResource:@"TaskApp_DataModel 16" ofType:@"mom"];
NSLog(@"%@",modelPath);
managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];

我在这里定义了“自动迁移”选项:

  NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"storedata-sql"]];


NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];



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

有谁知道如何升级吗?谢谢。

最佳答案

它只会尝试从用户现有版本(可能是 v1)转到当前版本。如果您有 3 个版本,那么您需要 v1-v2、v2-v3、v1-v3 的映射。 16个版本都发货了吗? 如果是这样,您可能需要开始制作新的迁移 map ,如果您以前没有尝试过,那么启用自动迁移也可能是值得的,因为它可以很好地填补空白。我认为是:

[dict setObject:[NSNumber numberWithBool:YES] forKey:NSInfersMappingModel];

但你必须仔细检查。

很抱歉带来坏消息

关于cocoa - 核心数据的多个版本之间的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309200/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com