我正在完成将我的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框架依赖项升级项目时所看到的情况,或者这是否是编译器错误
答案 0 :(得分:9)
对于遇到类似问题的其他人,请尝试以下方法: 打开控制台(不是终端)并选择所有消息。然后尝试构建您的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” (无效文件):无效的诊断签名功能:无效 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()来修复它 - 但不应该需要它。我已经提交了一份错误报告。
答案 1 :(得分:5)
检查构建阶段 - 编译已删除文件的源或带有空白图标的文件,删除此文件后错误消失
答案 2 :(得分:2)
感谢@Dug提供构建阶段提示。我最终走的方向不同于删除...
检查Build Phases - Compile Sources后,找到灰显的文件(当前没有指向实际文件的链接)以识别相关文件。
如果文件仍在使用,则在Project Navigator(左栏)中找到它们,你会发现它们是红色的,因为Xcode只有一个引用,而不是实际文件的位置。
选择每个红色文件,然后前往文件检查器(右侧列)。你会看到“位置”。通过单击灰色文件夹找到文件,并在Xcode以外的文件结构中找到它们。
如果你正在使用回购,你可能会发现更容易删除红色文件,选择文件>将文件添加到...并简单地重新添加它们,以便链接更通用,而不是直接指向您机器的文件位置。
在项目文件合并之后发生这种情况,我已经从主回购分支了很长一段时间,因此合并中丢失了少量文件位置。