想回到過去,將 Xcode 8 的專案變成 Swift 2.3

想回到過去,試著讓 App 繼續,繼續使用熟悉的 Swift 2 ,可不可以呢 ?

可以的 ! Xcode 8 為我們留了一條活路,讓我們回到過去,繼續使用和 Swift 2 相近的 Swift 2.3 。以下即為魔法施展,將 Xcode 8 專案變成 Swift 2.3 的步驟。

1 點選 TARGETS 下的 App,切換到 Build Settings 頁面。在右上角的搜尋框輸入 legacy。

所以我們是要去華山的 Legacy 聽演唱會嗎 ?

當然不是,程式還沒寫完,還不能聽演唱會。繼續努力將目光回到 Xcode,我們的目的是為了找尋 Use Legacy Swift Language Version。( 使用舊版的 Swift )

2 將 Use Legacy Swift Language Version 改成 Yes,表示我們想繼續使用舊版的 Swift ,也就是 Swift 2.3。

如果專案當初是從 Xcode 8 建立,AppDelegate.swift 將冒出許多黃色的警告,因為 Xcode 8 在建立新專案時,生成的 Swift 檔採用最新最潮的 Swift 3 ,造成 AppDelegate.swift 部分的程式不符合 2.3 版。

錯誤有點多,幸好大部分都是同一種錯誤,function 多餘的底線 _ 參數名稱造成的。所以我們只要將 _ 刪除,即可幾乎消滅全部的警告。我們將 AppDelegate.swift 每一個 function 裡 application 參數前的 _ 刪除,如以下 function applicationWillResignActive 的例子:

刪除 _ 有種方法,可手動按鍵盤的 delete 刪除,也可點選 _ 的相關黃色警告後,按 Fix-it 刪除。

如下圖所示,刪除 _ 後,AppDelegate.swift 還殘存一個黃色警告,這是因為 App 完成啟動後呼叫的 function 在 Swift 3 和 2.3 有小小的差異。

差異在參數 launchOptions 的型別。因此,我們需將 launchOptions 的型別從 [UIApplicationLaunchOptionsKey: Any] 改成 [NSObject: AnyObject],以符合此 function 在 Swift 2 的定義。

終於,大功告成,我們可以繼續採用熟悉的 Swift 2.3,而且完全看不到一絲絲煩人的黃色警告 !

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store