【问题标题】:iPhone Core Data Migration With Multiple Models多机型 iPhone 核心数据迁移
【发布时间】:2010-07-13 16:07:14
【问题描述】:

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

  • 选择 modelOne.xcdatamodel,然后选择 Design > Data Model > Add Model Version。
  • 点击command + 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]];
    
  • 上次我进行了清理和构建,出现“找不到源存储模型”的错误。

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

【问题讨论】:

  • 我也有同样的问题——你解决了吗?

标签: iphone migration core-data


【解决方案1】:

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

【讨论】:

  • 手动删除应用程序使其不必运行迁移,因此在这种情况下您看不到上述错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多