Xcode 7出现问题:命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc执行失败,退出代码为1。

6
我正在进行将我的Swift项目更新到Xcode 7的Swift 2.0的过程中。在构建项目时,Xcode报告了以下错误:

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

这种情况发生在SwiftyJSON或SwiftSpinner框架中(编译器似乎先随机选择一个并失败,因此错误会间歇性地报告在其中任何一个)。我已经将这些框架更新到它们xcode7/swift2兼容的分支版本,但是该项目仍无法编译。

只是想知道是否有其他人在升级具有cocoa pods框架依赖项的项目时遇到了这种情况,或者是否这是编译器错误。

我设法修复了这个问题,我的代码中的某个地方做得不对,而我的一个库也不存在。因此,我建议检查日志并查看它所说的内容,然后进行修复。 - CaffeineShots
@CaffeineShots 请详细说明如何找到错误的原因?在错误行之前的所有文本中,我没有看到任何关于问题原因的迹象。 - Morten Holmgaard
3个回答

10

对于其他遇到类似问题的人,请尝试以下方法:

打开“控制台”(不是终端),并选择“所有消息”。然后尝试构建您的Xcode项目,当它失败时,请查看其中列出的任何可能与Xcode有关的消息。

我发现了这样一条消息:

01/10/15 10.24.17,808 Xcode[53145]: DVTAssertions:警告 /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-8228/IDEFoundation/Playgrounds/IDEPlaygroundAuxiliarySourceCompilerOperation.m:311 细节:无法从文件"/Users/username/Library/Developer/Xcode/DerivedData/OurProject-diexylwajzhwgtfqdwiphjgzdwcy/Build/Intermediates/OurProject.build/Debug-iphoneos/OurProject.build/Objects-normal/armv7/CheckoutUserDataAdapter.dia"读取诊断信息(无效文件):无效诊断签名 函数: void XCGenerateDiagnosticsFromFile(NSString *__strong, NSString *__strong, NSDictionary *__strong, NSDictionary *__strong, IDEActivityLogSectionRecorder *__strong, BOOL (^__strong)(IDEActivityLogMessage *__strong)) 线程:{number = 250, name = (null)} 请使用http://bugreport.apple.com报告此警告消息及任何有用的信息。

这为我们提供了错误位于CheckoutUserDataAdapter.swift的信息。经过试验和错误,我们发现问题在于它从其超类覆盖的方法中调用了一个方法。不知何故,它无法找到正确的方法。
我们通过在CheckoutUserDataAdapter.swift中添加super.methodCall()来解决了这个问题 - 但这当然不应该是必需的。我已经提交了一个错误报告。


我刚刚注意到你昨天标记了我,很抱歉回复晚了。在我的端上,我有这个文件,我将其包含到我的项目中,但实际上只是在本地引用该文件,而没有将其包含到我的沙盒中。 - CaffeineShots
@Morten,在错误信息中,你在哪里看到对你的 .swift 文件的引用? - Luis Delgado
@LuisDelgado .../Objects-normal/armv7/CheckoutUserDataAdapter.dia - 我知道我有一个同名的Swift文件。 - Morten Holmgaard
我已经找到了要使用@MortenHolmgaard的解决方案修复问题的文件,并经过反复试验发现,问题是一个嵌套函数具有某些参数的默认值。一旦删除了默认参数,错误就消失了。 - Rygen

5

检查 Build Phases - 编译源文件中是否存在已删除的文件或带有空白图标的文件,一旦将该文件删除,错误就会消失。


2
感谢@Dug提供的Build Phase提示。我最终选择了不同的方法而不是删除...
在检查Build Phases - Compile Sources后,找到灰色的文件(目前没有链接到实际文件)以识别相关文件。
如果这些文件仍在使用,则在Project Navigator(左侧列)中找到它们,您会发现它们呈红色,因为Xcode只有引用而没有实际文件的位置。
选择每个红色文件,然后转到文件检查器(右侧列)。您将看到“位置”。通过单击灰色文件夹并在Xcode之外的文件结构中找到它们来定位您的文件。
如果您正在使用repo,则可以更轻松地删除红色文件,选择“文件”>“添加文件到...”,然后简单地重新添加它们,使链接更通用,而不是直接指向您机器的文件位置。
这在项目文件合并后发生在我身上,我已经从主repo分支出相当长一段时间,因此在合并过程中丢失了一些文件位置。

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