【问题标题】:Can't solve, "Can't merge models with two different entities named"无法解决,“无法合并具有两个不同实体的模型”
【发布时间】:2011-04-28 10:34:02
【问题描述】:

我正在使用 iOS 4.1 中的 Core Data 项目(针对 3.1)。当我添加一个数据模型版本时,我得到了可怕的“无法将模型与两个名为 xxx 的不同实体合并”错误。“清理目标没有帮助。删除构建目录没有帮助。解决问题的唯一方法是删除以前安装的应用程序版本并重新安装,这违背了版本控制和数据迁移的全部目的。

我有另一个项目成功地使用了这个过程,它们共享我为处理核心数据而放在一起的相同代码库。我不知道是什么导致了这个项目。

我的核心数据代码基于 Grouchal 的答案 link text 和 Jeff Lamarche 的 link text。在疑难解答中,我倾注了这些以及网络上其他类似的文章。大多数有这个问题的人似乎在“清理所有目标”方面运气不错。但我正在罢工。

有什么建议吗?

【问题讨论】:

    标签: core-data ios data-migration


    【解决方案1】:

    对于那些在尝试使用核心数据轻量级迁移后遇到这个问题的人:

    即使按照说明创建数据模型的新版本后,我仍然遇到此问题。我注意到我的应用程序包中有两个“.mom”文件,一个“.mom”和一个包含“.mom”文件的“.momd”目录。

    基于此,我找到this excellent post 解释问题并提供解决方案。

    关键是用这个实现替换为你生成的- (NSManagedObjectModel *)managedObjectModel的实现:

    - (NSManagedObjectModel *)managedObjectModel {
    
        if (managedObjectModel != nil) {
            return managedObjectModel;
        }
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"Foo" ofType:@"momd"];
        NSURL *momURL = [NSURL fileURLWithPath:path];
        managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
    
        return managedObjectModel; }
    

    其中“Foo”是您的数据模型的名称。

    希望这对某人有用 - 我花了太多时间在墙上敲打我的头。再次感谢苹果! :)

    【讨论】:

      【解决方案2】:

      这是我的解决方案

      ((RootViewController *) [self.tabBarController.viewControllers objectAtIndex:0]).managedObjectContext = self.managedObjectContext;
      ((AlbumViewController *) [self.tabBarController.viewControllers objectAtIndex:1]).managedObjectContext = self.managedObjectContext;
      ((CameraViewController *) [self.tabBarController.viewControllers objectAtIndex:2]).managedObjectContext = self.managedObjectContext;
      ((VideoViewController *) [self.tabBarController.viewControllers objectAtIndex:3]).managedObjectContext = self.managedObjectContext;
      

      【讨论】:

        【解决方案3】:

        我发现我正在使用的第 3 方库正在创建它自己的 CoreData 数据存储,并且正在使用“合并模型”方法或数据模型管理。 我联系了供应商并帮助解决了这种情况。

        【讨论】:

        • 第 3 方库是什么?我也遇到了这个问题。
        猜你喜欢
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 2021-07-30
        • 2015-04-24
        • 2013-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多