2009-10-11 107 views
6

看起来最近的Xcode 3.2增加了一些代码生成细节(我认为)缺少雪豹之前的版本。Xcode 3.2.1 - 为什么核心数据生成的类会导致生成错误?

我采取了以下措施:

  1. 定义有几个实体的简单.xcdatamodel模型,包括一个(可逆)之一:一对多的关系(一个Endpoint有许多Subscription对象)

  2. 文件 - >新建并选择(无图标)“托管对象类”。从那个向导中,我选择了我的课程,然后我参加了比赛。

  3. 直到那是我试图建立。我得到这样的结果并不能弄清楚:

未定义的符号: “_OBJC_METACLASS _ $ _ NSManagedObject”,从引用: _OBJC_METACLASS _ $ _认购在认购-B5BE258DF28BC03B.o _OBJC_METACLASS _ $ _端点的端点。 Ø “_OBJC_CLASS _ $ _ NSManagedObject”,从引用: _OBJC_CLASS _ $ _认购在认购-B5BE258DF28BC03B.o _OBJC_CLASS _ $ _端点Endpoint.o LD:符号(S)没有发现 collect2:LD返回1个退出状态

我喜欢什么帮助:

  1. 如果任何人有什么,我只是做了错误的任何想法,那简直是太棒了。

  2. 它看起来像获得Xcode *重新*生成您的类的唯一方法是文件 - >新并重新替换它们,其中(除其他外)导致新类和旧的重复引用无用地将类文件留在项目的移动文件夹中。任何人都知道如何保持这些同步正确?我还没有发现任何涵盖新功能的Apple文档。

回答

25

您是否将CoreData.framework添加到您的项目(或意外删除它)?这可能是链接错误的来源。

此外,我建议您查看Wolf Rentsch的MOGenerator。对于使用代间隙模式的核心数据类,这是一个功能更强大的代码生成器。它可以在保存xcdatamodel时自动重新生成类,同时保留自定义代码。

+0

感谢您的回复。我以为我有,但有可能我错过了它。我简单地看了一下MOGenerator,但我没有花时间去评价它,因为它看起来像Apple刚刚在Xcode 3.2中加入了类似的功能,并且不想在工作流中添加突然过时的工具。鉴于Xcode功能甚至没有真正的记录,我不妨花时间了解MOGenerator。谢谢! –

+0

正在努力获取MOGenerator,并且只是给所有查看此问题的用户提供的参考资料,截至2009年10月13日,Xcode 3.2.x已打破xmo'd集成:http://www.openradar.me/7289446 –

9

发生这种情况的最简单(也是最频繁,最容易忽视)的方式是,如果您意外生成一组新的MOC类而不移除对旧的引用(可能位于项目中的其他组中) 。在我意识到这正是我所做的事情之前,我只是花了太长时间才将自己的头撞向XCode。

+1

究竟是什么发生在我身上。重新生成托管对象类,但忘记更改导致项目中同一文件的两个引用的目标文件夹。 –