2012-01-04 41 views
8

标题非常含有这个问题。我们发布了一个应用程序,其数据模型的反向配置不当。我们在下一个版本中使用新版本的数据模型修正了这些错误,但是Xcode在编译以前的数据模型版本时仍然显示警告。编译托管对象模型时,有什么办法可以忽略丢失的反向警告?

我不想破坏将文档从旧数据模型迁移到新数据模型的能力,而且我非常确定,更改旧数据模型中的倒数就可以做到这一点。所以,我想知道是否有办法为这个文件压制这个警告 - 我担心别人可能会出现,看到警告,并决定“修复”它。

编辑:基于pe8ter的评论,它看起来像我想为数据模型的单个版本指定MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS选项。我不想在整个项目范围内关闭它,甚至不想在整个范围内关闭它,因为如果人们将来犯同样的错误,我想要显示警告。

+1

您是否尝试在目标的构建设置中弄乱核心数据设置?在那里有一个关于抑制不存在反向关系的警告。 – pe8ter 2012-01-05 02:48:13

+0

我在项目设置中错过了它们,但看起来我想禁用MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS。不幸的是,我没有看到一种方法来完成单个模型修订。整个模型包被编译;个别修订不会分开编译。即使它们是,MOMC似乎忽略了构建阶段中指定的单一文件编译器选项。 – Jablair 2012-01-05 16:09:06

+0

我有这个相同的问题,因为Apple在新的XCode版本中引入了以前未捕获的新警告。似乎我将在整个模型中使用-w,并在向公众发布时检查警告。 – Bjinse 2013-08-01 20:37:37

回答

1

我不能说我曾经需要做这自己,但你可以尝试编写运行在你的旧数据模型momc编译器设置,只要你喜欢MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS脚本。然后添加运行脚本构建阶段以在构建时运行该脚本。您可能需要从您的目标中删除旧的数据模型,以防止Xcode试图编译它。您可以使用“复制包资源”构建阶段将编译后的模型包含在构建的应用程序中。

在您可以编写该脚本之前,您必须找到momc模型编译器。 This page说它在Library/Xcode/Plug-ins/XDCoreDataModel.xdplugin/Contents/Resources/,但它似乎已移动到Xcode 4.

+0

看起来momc位于/ Developer/usr/bin/momc,或者安装了Xcode的地方。但是,我认为这不会起作用。 momc将整个xcdatamodeld包编译为一个单独的实体,而不是为* _v1.xcadatamodel,* _v2.xcdatamodel等进行单独编译。在这种情况下,我想忽略* _v2上的警告,但保留它们以便将来修订。 – Jablair 2012-01-05 22:21:44

+0

最后的努力:从目标中移除旧模型,以便Xcode构建所有模型,但那些模型会带有警告。使用脚本构建阶段编译所有模型,包括旧模型,并使用结果替换Xcode构建的模型。如果这不起作用,我不得不认为答案是“不行,没有办法改变单个文件的momc设置。”祝你好运。 – Caleb 2012-01-05 22:36:43

2

由于您只包括文件的向后兼容性,因此你不希望它永远不会改变,我会建议检查已经编译文件到源代码控制中,并使用Copy Files构建阶段将其放入正确的位置。

由于我们只是谈论一个包中的单个修订版,您可能需要在模型源中保留一个空的虚拟版本(因此它的编号正确)。那么你的复制文件阶段就会覆盖它。

+1

我喜欢这个想法。你会如何做到这一点? – 2013-01-30 18:36:32

相关问题