2015-06-13 85 views
5

我剛剛使用Xcode 7的遷移工具將項目從Swift 1.2遷移到2.在修復了錯誤以及錯誤等錯誤之後,除了阻止我發生錯誤甚至建築:命令失敗,原因是信號:非法指令4.由於信號Xcode 7命令失敗:非法指令4

我試圖在這些文章中的幫助(Xcode 7 and Swift 2.0 : Command failed due to signal: Abort trap: 6Command failed due to signal: Abort trap: 6),這是不容我相同的問題,但儘管如此,他們沒能解決問題。

我已經清除了構建並刪除了派生的數據文件夾。我有最新的CocoaPods安裝,Xcode工具在7.0,而我的Swift編譯優化在None。還有什麼我失蹤?

謝謝!

+1

我有同樣的問題,在我的情況下,我有兩個類和一個協議:'類A:B,P',但'B類'有'協議P'強制執行的屬性。出於某種原因,不包括真正具有該屬性的類中的協議會導致此錯誤。我只是讓'B類'包含協議,錯誤消失了! – dcestari

+0

感謝@dcestari,有沒有出現一個幫助你找到它的構建錯誤?還是隻是偶然的機會? –

+0

是@ bj-miller,但他們不清楚,我只是看到'ref myAttribute'(假設'myAttribute'是屬性的名稱)和'ref B'類似的東西。 – dcestari

回答

4

所以一個答案被發現得益於同事的幫助。我們在構建錯誤中發現了有問題的文件,但沒有提供任何行。通過消除過程,我們發現它是從一個可選字典中爲一個JSON字典([String:AnyObject],typealiased爲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

'非法指令'僅表示您的二進制文件包含的指令對於您嘗試運行代碼的體系結構類型無效。開始查看項目構建設置中的最低版本。

+0

最低版本設置爲7.0,甚至更改爲8.0或9.0仍會導致相同的錯誤。 –

+0

您是否在爲模擬器或設備構建時遇到錯誤? – Laurent

+0

兩者。 iOS模擬器8.1和9.0以及設備(iOS 9 beta版iPhone 5s)。構建階段本身失敗,我甚至無法運行它。 –

相關問題