我發現了一些策略遷移到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/
我覺得首先你應該檢查所有正在使用的dependcies已更新與否。他們已經添加supprt快速3或不 –
取決於多大的項目和多少庫你使用,如果它的大和使用多個庫,然後只是不更新,它可以正常工作與迅速2 – Tj3n