【问题标题】:"Data Model Version Compile".. error after upgrading to Lion (Xcode4.1)“数据模型版本编译”.. 升级到 Lion (Xcode4.1) 后出错
【发布时间】:2011-10-10 22:05:04
【问题描述】:

自从昨天升级到 Lion (10.6->10.7) 以来,我一直无法编译在升级之前编译没有问题的项目。

导致此错误的甚至不是最近对项目的更改:如果我从 SVN 签出几天或一周前的项目版本,我在构建时会遇到相同的错误:

"Command /Developer/usr/bin/momc failed with exit code 6",扩展为:

构建错误:

DataModelVersionCompile /Users/ian/Library/Developer/Xcode/DerivedData/inventory-gtvznzuhomhlakbdpocaqwnrihhx/Build/Products/Debug-iphonesimulator/inventory.app/inventory.momd inventory/inventory.xcdatamodeld
cd /Users/ian/AppsDev/uk.co.isurvey-inventory/ios/inventory/trunk/inventory
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/usr/bin/momc -XD_MOMC_SDKROOT=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -XD_MOMC_IOS_TARGET_VERSION=4.3 -MOMC_PLATFORMS iphonesimulator -MOMC_PLATFORMS iphoneos -XD_MOMC_TARGET_VERSION=10.6 /Users/ian/AppsDev/uk.co.isurvey-inventory/ios/inventory/trunk/inventory/inventory/inventory.xcdatamodeld /Users/ian/Library/Developer/Xcode/DerivedData/inventory-gtvznzuhomhlakbdpocaqwnrihhx/Build/Products/Debug-iphonesimulator/inventory.app/inventory.momd

2011-07-21 19:24:44.954 momc[4436:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSXMLDocument initWithData:options:error:]: nil argument'
*** First throw call stack:
(
0   CoreFoundation                      0x00007fff8e411986 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff8d0d5d5e objc_exception_throw + 43
2   CoreFoundation                      0x00007fff8e4117ba +[NSException raise:format:arguments:] + 106
3   CoreFoundation                      0x00007fff8e411744 +[NSException raise:format:] + 116
4   Foundation                          0x00007fff8c761310 -[NSXMLDocument initWithData:options:error:] + 89
5   momc                                0x0000000102f04a2c momc + 10796
6   momc                                0x0000000102f04fe8 momc + 12264
7   momc                                0x0000000102f058f0 momc + 14576
8   momc                                0x0000000102f03d20 momc + 7456
9   ???                                 0x000000000000000a 0x0 + 10
)
terminate called throwing an exception
Command /Developer/usr/bin/momc failed with exit code 6

进一步说明:

AFAIK,唯一的区别是我现在使用的是 Lion,以及 Xcode 4.1 的 Lion 版本(在此之前我使用 Xcode 4.1 for Snow Leopard)。

我已经删除了 /Developer/ ,我已经重新安装了几次,并重新下载了 App Store Xcode 安装程序,以防它损坏。

如果我使用 Xcode 创建一个 new 项目(并使用 Core Data,我认为这与构建我的项目存在的任何问题有关),它可以构建并运行良好: 也许我需要做一些事情来修复我的真实项目?

任何建议都会很棒! 干杯, 伊恩

【问题讨论】:

  • 好的,我设法修复了它:我不得不从 .xcdatamodeld 文件中删除一些 .xcdatamodel 文件,这些文件没有被使用并且应该在很久以前就被删除了。不知道他们为什么还在那里,或者他们为什么会造成问题,甚至不知道我是如何尝试将其作为解决方案的。但是,它现在可以工作了,这绝对是唯一有效的解决方案。
  • 我遇到了同样的问题。我有几个版本的数据模型和一个自定义更新模型。幸运的是,这些都是预发布代码,我可以把它们扔掉。如果有人正在使用需要管理模型更新的生产代码 - 请注意。
  • '*** -[NSXMLDocument initWithData:options:error:]: nil argument' 是一直想知道的部分。 data 参数是唯一不能为 nil 的参数,所以我想知道哪个文件给它一个 nil NSData?
  • 进一步检查显示我还在 xcdatamodeld 文件中隐藏了一个长期丢失的版本,该版本未在 Xcode 中列出 - 删除它解决了我的问题 - - 我向苹果报告了这个错误

标签: objective-c xcode4 compiler-errors osx-lion


【解决方案1】:

我遇到了同样的问题,OS X Lion 10.7.1,Xcode 4.1。

通过从 *.xcdatamodelid 目录中删除所有未在 Xcode 中显示的 *.xcdatamodel 目录来解决问题。这些目录出现在 Xcode 中 *.xcdatamodel 重命名之后。

可以在终端中通过 Finder 中的“显示包内容”菜单或通过右键单击 Xcode 中的 xcdatamodel 并选择“在 Finder 中显示”来完成删除。

【讨论】:

  • 抱歉,*.xcdatamodelid 文件和/或目录在“哪里”?很困惑。
  • 这取决于您保存核心数据模型文件的位置。通常 *.xcdatamodelid 在您的项目目录中。如果它不存在,那么我建议您只是搜索它。如果您通过 Finder 浏览它,它看起来像一个文件,而不是一个目录。要查看此文件的内容,请从上下文菜单中选择显示包内容。
  • 错过了 Visual Studio,不得不删除所有与项目相关的目录,例如 /Library/Developer/Xcode/DerivedData/YourProjectName-*
【解决方案2】:

重新启动 XCode 并从 Derive Data 文件夹中删除所有数据。

【讨论】:

    【解决方案3】:

    有趣的是,我发现我在安装新版本的 Xcode 后出现了这种情况。这是由从已安装的DMG 运行的 Xcode 引起的。我追了一会儿这个问题,直到我最终发现它是使用 DMG 上的工具而不是复制到 Applications 的文件进行构建。 通过弹出 Xcode DMG 它解决了这个问题。 以为我会发布此内容以防其他人受益。 我怀疑这里和其他线程上发布的一些修复程序在某些情况下可以正常工作,因为重新启动会卸载DMG

    【讨论】:

      【解决方案4】:

      更新 OSX(次要更新)后,我的 CI 突然出现了这个问题。 Jenkins 无法构建任何 Obj-C 项目并且总是以同样的错误停止(不取决于项目/数据模型)。​​

      解决方法是简单地删除 derivedData 文件夹并重新启动机器。

      rm -rf ~/Library/Developer/Xcode/DerivedData/*
      sudo reboot
      

      【讨论】:

        猜你喜欢
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        相关资源
        最近更新 更多