多核模型的iPhone核心数据迁移

Nou*_*ura 5 migration iphone core-data

我的项目有两个模型,我想允许其中一个版本.这是我做的:

  • 选择modelOne.xcdatamodel,然后选择Design> Data Model> Add Model Version.
  • 单击命令+ i然后将版本添加到modelOne.xcdatamodeld内的modelOne.xcdatamodel
  • 修改了modelOne.xcdatamodel,只添加了一些属性.
  • 在委托中,我将选项字典添加到NSPersistentStoreCoordinator,并通过合并两个模型得到NSManagedObjectModel,如:

    NSString *path1 = [[NSBundle mainBundle] pathForResource:@"modelOne" ofType:@"momd"];
    NSURL *momURL1 = [NSURL fileURLWithPath:path1];
    NSManagedObjectModel *modelOne = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL1]; NSString *path2 = [[NSBundle mainBundle] pathForResource:@"modelTwo" ofType:@"mom"];
    
    NSURL *momURL2 = [NSURL fileURLWithPath:path2];
    NSManagedObjectModel *modelTwo = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL2];      
    
    
    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel modelByMergingModels:[NSArray arrayWithObjects:modelOne, modelTwo, nil]];
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后我做了一个干净的构建,我得到了关于'无法找到源存储模型'的错误.

知道如何解决这个问题吗?(注意:如果我只使用mergedModelFromBundles,我得到另一个错误'无法将模型与名为Entity1的两个不同实体合并'

Tec*_*Zen -2

我有类似的问题。结果发现旧的.mom编译模型文件仍然在模拟器的应用程序包中。显然,当您清理项目时,它不会擦除模拟器上的应用程序包。手动从模拟器中删除应用程序,然后在再次构建之前进行清理解决了问题。

  • 手动删除应用程序可以使迁移不必运行,因此在这种情况下您不会看到上述错误。 (4认同)