Xcode 4.3中的Core Data和UIManagedDocument:无法合并模型

3
我想感谢所有为这个网站做出贡献的人。我是一个编程方面的新手,你们都帮了我很多。话虽如此,让我们继续我的最新问题吧!
我正在创建一个应用程序,它使用UIManagedDocument为我存储Core Data模型。我以前使用以下代码创建UIManagedDocument,但现在在Xcode 4.3.2(通过Mac App Store更新)中出现了问题。
以下是代码:
    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"MyFile"];

    NSLog(@"\n\n This line does print. \n\n");
    UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
    NSLog(@"\n\n This line does not print \n\n");

我在控制台中收到了如下错误消息:
未捕获异常 'NSInvalidArgumentException',原因是:'无法合并具有两个名为'Foo'的不同实体模型'
事实上,我没有试图让版本等内容工作。我只是创建了一个包含两种类型实体的数据模型,并尝试让UIManagedDocument在我的应用程序中打开:非常简单,对吧?
我已经卸载并重新安装了Xcode,但没有成功。我也已经删除了我的Core Data模型,并从头开始重做了它,但还是没有成功。
我完全迷失了方向,已经花费了大约两个晚上来解决这个问题。
请帮助我!谢谢阅读。如果需要更多信息,请告诉我。我愿意为答案付出一切…

我在项目文件夹中只有一个.xcdatamodel。我实际上创建了新的Core Data模型,添加了两个实体,然后运行项目。我应该怎么做才能创建同一数据模型的多个版本? - Caborca87
我知道错误发生在UIDocument类的initWithFileURL方法中。除此之外,我完全被卡住了。顺便说一下,我注意到.xcdatamodel文件正在转换为.xcdatamodeld文件(注意附加的“d”)。这告诉我们什么吗? - Caborca87
根据我的经验,这是正常的。你可以尝试子类化UIManagedDocument并覆盖-managedObjectModel方法。我通常是这样做的:[NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle bundleForClass:[self class]]]],但如果仍然会重复实体,也许其他代码会起作用。老实说,我不知道你看到的问题的原因是什么;我只是建议尝试我会尝试的方法。 - paulmelnikow
我认为我应该能够轻松地做到这一点。只是有点令人沮丧,因为我只有一个模型,而文档明确指出:“如果您的应用程序支持多个文档类型,每种类型使用不同的模型,则可以执行此操作。您希望确保每个文档类别的模型不会合并。”既然我只有一个模型,我就不应该遇到这个错误。 - Caborca87
如果我找到解决方案,下周我会发布我的答案。感谢您的帮助@noa。 - Caborca87
显示剩余3条评论
1个回答

1

所以我弄明白了。

我很难相信我必须要子类化UIManagedDocument。最终我并不需要这样做。我的问题在于我的文件链接到项目的方式有些问题。

我按照这里的步骤操作,现在一切都好了。

核心数据应用在iPhone设备上崩溃


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接