Swift3対応した時の手順
はじめに
過去の記事(Swift3でPush通知から起動の時の、userinfo取得でちょっと迷った、Swift3にしたらAnyObjectがAnyになった)でSwift3にした時にというお話をしているのに、実際に移行する時の話をしていないなと思ったので、超簡単に手順をまとめます。
作業内容(随時更新)
※CocoaPodsを利用しています。
- ライブラリの対応状況を調べる
- Macのバックアップを取っておく
- AppStoreでXcode8にアップデートする
- Xcode8で対象のプロジェクトを開く
- 対象のプロジェクトのコードのみ(ライブラリとかは除く)をXcode8のconvert機能でswift3.0にconvert
- Podfileを開き,各swiftで書かれたライブラリをswift3.0対応しているブランチなどに指定する
$ pod update
- swiftで書かれたライブラリのbuild settingsで
Use Legacy Swift Language Version
をNO
にする Module file was created by an older version of the compiler
ってでた場合- build folderのCleanをする。Cmd ⌘ + Alt ⌥ + Shift ⇧ + K
- http://kazuhei.hatenablog.com/entry/2015/05/19/021939
- ひたすら赤四角の自動修正
- Errorを消す
- Xcode 8 の不要なログを非表示にする方法を実行する
気になったことメモ
- closureで引数にラベル使えないっぽい?
- 従来は第一引数にラベルなしだったから、呼び出し元を同じようにするならメソッド宣言の部分に
_
入れる(convertでうまくやってくれることを祈る) - closure周りで非同期の場合、@escapingする
- Alamofireのメジャーアップデートに対応
- migration guide
- Alamofire.Method.GET => Alamofire.HTTPMethod.get
- enumの小文字化自動対応されてないと地味にめんどい
参考資料
ざっと参考にしたページのリンクをまとめます。特に- Swift 3 を書くときに知っておきたい API デザインガイドラインは非常にわかりやすかったです。