2016-11-21 71 views
0

我有,幾乎是在迅速完成了2.2的一個項目,現在我想更新的代碼,以迅速2.2〜迅速3.0.I使用的CocoaPods爲THRID黨庫的整合正在和需要以下建議:將項目源代碼從swift 2.2 XCode 7.3.1遷移到swift 3 XCode 8的推薦方法?

  1. 我應該繼續通過運行pod更新來更新首先使用的庫嗎?如果任何lib沒有更新以支持swift 3,我應該怎麼做?

  2. 我應該繼續手動更新代碼到swift 3還是遵循XCode8建議?

如果我直接去XCode8建議,然後XCode8開始的建議,以更新庫的源代碼also.I正在尋找處理這一切的好辦法。謝謝。

+0

我覺得首先你應該檢查所有正在使用的dependcies已更新與否。他們已經添加supprt快速3或不 –

+0

取決於多大的項目和多少庫你使用,如果它的大和使用多個庫,然後只是不更新​​,它可以正常工作與迅速2 – Tj3n

回答

2

沒有一個「最好」的方式 - 因爲每一個項目是在它是多麼容易被轉化爲它的編寫語言的更新版本可能不同

這將被推薦給:

  1. 在嘗試轉換/遷移任何內容之前保存項目的備份副本。
  2. 按照Xcode的建議更新代碼。
  3. 更新諸如Cocoa Pod的依賴關係。
  4. 修復轉換過程中可能無法解決的所有未解決的問題。

有耐心,經常轉換爲不是一鍵式的過程。

1

如果您的某些庫尚未更新到Swift 3.0,那麼這沒有問題,因爲您可以告訴編譯器只使用舊編譯器編譯該庫。

我的建議(實際上是如何更新自己的項目)是運行自動遷移向導。 (編輯器>代碼語法>升級到最新的Swift語法)。然後你應該運行pod update,確保刪除你的podfile中的任何版本說明符。

一旦你完成了這兩件事,你就可以打開你的項目,並且遇到很多編譯器錯誤,你的項目越大,你將擁有的越多;不幸的是,這是不可避免的,因爲內置的遷移工具很糟糕。

現在將是通過跋涉和修復這些錯誤的情況下,其中大部分將可能是很簡單的東西像下探AnyObjectAny,但有些問題可能你絆倒。

現在,正如我所提到的,如果一個庫尚未更新Swift 3.0,您可以打開您的Pods項目設置並選擇相關庫。在構建設置下,您會找到一個名爲Use legacy Swift syntax的鍵。將其設置爲true並重建。這會強制編譯器僅使用此編譯器的舊編譯器。

我希望這個深入的解釋是有幫助的。

0

我發現了一些策略遷移到Swift 3 我直接遷移到Swift 3.0。我使用CocoaPods,所以我首先遷移了我的依賴關係。這意味着針對每個開源庫(或專用吊艙)執行上述步驟。

到目前爲止,我對這個項目的唯一依賴是我自己的庫,這使得這很容易,因爲我控制了所有的代碼。但是,如果您有第三方依賴關係,那麼我會建議在項目上打開一個問題,與當前維護人員討論遷移計劃。我希望最受歡迎的項目正在做類似於我上面描述的內容。例如,AlamoFire有一個swift2.3和swift3.0分支。如果需要,您可以自己分叉和遷移第三方庫 - 然後提交pull請求或使用fork,直到維護者提供解決方案。但是,在提交遷移請求之前,您一定要聯繫項目維護人員。

直到Xcode的8決賽,你需要將您的吊艙,以這些新的分支:

莢 '在MyLibrary',:git的=> 'https://github.com/username/MyLibrary.git',:支=> 'swift3.0' 這告訴CocoaPods獲取swift3.0分支上的最新版本,而不是最新發布的版本。

一旦你的依賴關係和Podfile被更新,你可以運行pod更新來引入每個庫的Swift 3.0版本。然後你可以遷移你的主應用程序。我建議在一次提交中提交所有此遷移 - 更新所有依賴項,遷移您的應用程序,然後提交 - 保持您的歷史記錄清潔。

錯誤

Xcode的遷移工具不perfect.It有時會無法遷移的測試目標,或僅部分地遷移應用和框架的目標。發生這種情況時,您可以嘗試再次運行該工具,但最好手動進行更改。以下是我看到的一些具體問題:

XCTAssert *()中的一些表達式沒有遷移。 閉包中的某些表達式不會遷移。 有時waitForExpectations(超時:)不會遷移。 在特定上下文中使用時,將NSIndexPath遷移到IndexPath通常會導致類似(indexPath as!NSIndexPath).section這樣的晦澀難懂的事情。 將關聯NSDate值的枚舉遷移到case myCase(Foundation.Date)而不是case myCase(Date)。 有時可選的協議方法沒有遷移,這會產生難以發現的錯誤。

參考鏈接: http://www.jessesquires.com/migrating-to-swift-3/

https://swift.org/migration-guide/

相關問題