2017-03-01 155 views
0

我必須編輯由不再在項目中的人開發的iOS應用程序。編譯問題:兩個包之間的Swift版本不兼容

他給了我應用程序的源代碼,但我無法編譯它。我正在使用xcode。

iOS的項目包含2包:

  • MAIN:包含寫在斯威夫特3.0.1
  • PODS的應用:包括書面的SWIFT 2.3

應用程序使用的庫我在「Swift編譯器 - 版本」中更改了MAIN.xcodeproj的「構建設置」: 我在PODS.xcodeproj中將「使用傳統Swift語言版本」更改爲「否」 我將此設置設置爲「是」

當我嘗試生成項目,我得到以下問題:

Contact.swift:10:8: Module compiled with Swift 2.3 cannot be imported in Swift 3.0.1: JSONCodable.swiftmodule 

當我跟隨在計算器其他職位的提醒,即改變「雨燕編譯器 - 版本」我改變了「使用傳統斯威夫特語言版本的」 MAIN.xcodeproj的 爲‘是’,我得到了很多兼容性的錯誤,如:

/MAIN/Model/Data.swift:55:1: Type 'Data' does not conform to protocol 'Storable' 

我嘗試了所有可能的值‘使用傳統的雨燕語言版本的’不更迭。 我也嘗試在只包含「3.0.1」的根文件夾中添加一個「.swift-version」文件,但它沒有奏效。

我想在我的podfile加入這一行:

config.build_settings['SWIFT_VERSION'] = '3.0.1' 

但它並沒有工作也沒有。

我試圖重新安裝cocaopods,但沒有任何改變。

如何將swift 2.3編寫的庫導入swift 3.0.1編寫的項目中?

謝謝

+0

您需要重新安裝莢 –

+0

我重裝了好時候沒有成功,我試圖強迫在podfile迅速版本,但事實並非如此都沒有 – Aznhar

+0

按照這個步驟:去編輯>>轉換>> CurrentSwiftSyntax –

回答

0

我認爲唯一的解決方案是將Pod的代碼從2.3轉換爲3.0,然後修改xcode不會自動更改的東西。 也許你可以強制你的pod版本在podfile中:

pod'〜> 3.0。1'

,然後重新安裝艙體與

pod install 
+0

謝謝你的工作 – Aznhar

2

斯威夫特還不支持使用該語言的一個版本與不同版本編譯的應用程序編譯包。您必須重寫其中的一個,以便它們都使用相同的版本。

這就要求迅速的ABI穩定下來,這種情況發生在快速版本4上,但現在已經推遲了。

+0

是的,但之前編譯過該項目,該應用程序已在商店中。所以我認爲我可以編譯它,除非該人給我錯誤的信息來源。 – Aznhar