2016-10-25 54 views
82

我將Xcode升級到8.1 GM,現在SwiftyJSON出現以下錯誤。其他進口框架似乎工作。有沒有辦法強制這個在Swift 3中工作,直到SwiftyJSON升級他們的框架?我用迦太基導入/更新框架。我也嘗試更換Use Legacy Swift language version開啓和關閉無濟於事。使用swift 3.0編譯的模塊無法在Swift 3.0.1中導入

模塊與雨燕3.0編譯不能在斯威夫特3.0.1進口: 模塊/ SwiftyJSON.swiftmodule/arm64.swiftmodule

回答

167

SwiftyJson正在被迦太基預編譯下載。預編譯的下載與Swift版本3.0。這使編譯器抱怨版本不正確。使用下面的命令:

carthage update --platform iOS --no-use-binaries 

SwiftyJson(和內迦太基所有其他框架)將在本地使用雨燕的本地版本(3.0.1),編譯器將不再抱怨編譯。

+7

您可能爲我節省了一個小時的搜索時間。謝謝。 – djv

+22

不客氣。說實話,迦太基應該更聰明一點,並檢查迅捷的版本號。 – zirinisp

+0

有沒有其他想法?因爲這不適合我,雖然在我的情況下,我有問題與Unbox – Xernox

10

確保您放置了新的XCode 8.1 GM包在你的應用文件夾。當我們中的一個人運行迦太基來更新我們的依賴關係時,我們遇到了這個問題,但並未替換應用程序文件夾中的XCode old 8.0應用程序(8.1 GM正在運行桌面)。

您希望確保在終端中運行以下內容:xcrun swift -version它返回Apple Swift version 3.0.1

+0

這對我有效,謝謝!此外,在終端工作的命令是xcrun swift -version – HH887

+2

仍然遇到同樣的問題。任何其他建議 –

+0

更正,我也是。第一次出現時建立起來很好,現在在嘗試運行時再次出現錯誤。 – HH887

18

從DerivedData中刪除應用程序chache並重建。錯誤可能是固定的。

這樣

的DerivedData路徑:

~/Library/Developer/Xcode/DerivedData/ 
+0

謝謝,這對我很有用。 – Nosgoroth

+0

爲我工作,我刪除這個folter,刪除pod文件夾,並使用「pod安裝」。並修復。 –

+0

嗨。這個解決方案爲我工作。你能否詳細解釋當我們清除派生數據時會發生什麼?錯誤如何消失? – iPhoneDeveloper

0

我有完全一樣的問題與庫XCTest_Gherkin,它爲我工作是:

  1. Product - >Scheme - >XCTest-Gherkin
  2. Product - >Build

希望它有幫助。我正在使用Cocoapods。

5

就像@zirinisp說:

  1. 您可以使用下面的命令:carthage update --platform iOS --no-use-binaries
  2. 使用以下命令:xcrun swift -version看到斯威夫特版本
  3. 這樣做:Xcode->preferences->locations清除導出的數據並歸檔數據,最重要的是將命令行工具更改爲「Xcode 8.1
  4. 使用以下命令:xcrun swift -version,可以看到swift版本是3.0。1
  5. 套裝Use Legacy Swift Language Version = NO

我希望它會幫助你

9

更新默認Xcode到新的終端爲我工作。

步驟1:使用以下命令將Xcode版本更新爲最新的終端。 Ref

sudo xcode-select -switch <path/to/>Xcode.app 

第2步:現在嘗試迦太基更新命令

carthage update --platform iOS 
8

只給了最新的更新:

迦太基已經在02月27日發佈的version 0.20,2017年

迦太基現在只使用預構建二進制文件(如果有可用的話)二進制兼容

這就是說,你不再需要使用:--no-use-binaries來避免不兼容的預編譯框架。

因此,請確保您有迦太基版本大於0.20,只是做:

carthage update --platform iOS 
+0

這對我有用,謝謝! –

+0

的XCode 8.3.3 迦太基更新至0.25版本及以下幹後,它爲我工作後 迦太基更新--platform的iOS --no使用的二進制代碼 – anoop4real

+0

@ anoop4real它並沒有爲你工作' - 沒有使用,binaries'?迦太基應該能夠檢測二進制文件是否與您的編譯器版本兼容。如果不兼容,應該自動刪除下載的二進制文件並在本地構建框架。 – kanekin

0

在Xcode中生成設置確保您框架搜索路徑包含適當的迦太基build文件夾:

$(inherited) 
$(PROJECT_DIR)/Carthage/Build/iOS 
相關問題