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

  • 选择modelOne.xcdatamodel,然后选择Design > Data Model > Add Model Version。
  • 单击 command + i 然后将版本添加到 modelOne.xcdatamodeld 中的 modelOne.xcdatamodel
  • 修改了modelOne.xcdatamodel,只是增加了一些属性。
  • 在委托(delegate)中,我将选项字典添加到 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]];
    
  • 上次我进行了清理和构建,我收到关于“找不到源存储模型”的错误消息。

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

    最佳答案

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

    10-08 12:12