我刚刚使用Xcode 7的迁移工具将项目从Swift 1.2迁移到2.修复了错过的错误等等,除了一个阻止我甚至构建的错误之外一切都很好:命令因信号失败:非法指令4.
我已尝试过这些文章(Xcode 7 and Swift 2.0 : Command failed due to signal: Abort trap: 6和Command failed due to signal: Abort trap: 6)中的帮助,这些文章与我的问题不同,但他们无法解决问题。
我已清理构建并删除了派生数据文件夹。我有最新的CocoaPods安装,Xcode工具是7.0,而我的Swift编译优化是无。还有什么我想念的吗?
谢谢!
答案 0 :(得分:6)
因此,在同事的帮助下找到了答案。我们在构建错误中找到了违规文件,但没有提供任何行。通过消除过程,我们发现它是一个行,它从可选字典中获取一个JSON字典([String:AnyObject],typealiased to JSONDictionary)的结果声明一个新的常量。这是一行:
let objectsDictionary = maybeJSON?[key] as? JSONDictionary
将此更改为两个保护声明:
guard let goodJSON = maybeJSON as? JSONDictionary else { return ... }
guard let objectsDictionary = goodJSON[key] as? JSONDictionary else { return ... }
这一行在Xcode 6.3.2中起作用,因为它只提供一个可选值,但由于某种原因,Xcode 7中的某些变化并不喜欢这样。我希望这可以帮助其他任何遇到这种情况的人。
答案 1 :(得分:2)
'非法指令'只是意味着您的二进制文件包含对您尝试运行代码的体系结构类型无效的指令。开始查看项目构建设置中的最低版本。