てくてくテック

気ままに開発のメモを書いていこうと思います。主にSwiftかと。

Swift3対応した時の手順

はじめに

過去の記事(Swift3でPush通知から起動の時の、userinfo取得でちょっと迷ったSwift3にしたらAnyObjectがAnyになった)でSwift3にした時にというお話をしているのに、実際に移行する時の話をしていないなと思ったので、超簡単に手順をまとめます。

作業内容(随時更新)

※CocoaPodsを利用しています。

  1. ライブラリの対応状況を調べる
  2. Macのバックアップを取っておく
  3. AppStoreでXcode8にアップデートする
  4. Xcode8で対象のプロジェクトを開く
  5. 対象のプロジェクトのコードのみ(ライブラリとかは除く)をXcode8のconvert機能でswift3.0にconvert
  6. Podfileを開き,各swiftで書かれたライブラリをswift3.0対応しているブランチなどに指定する
  7. $ pod update
  8. swiftで書かれたライブラリのbuild settingsで Use Legacy Swift Language VersionNO にする
  9. Module file was created by an older version of the compiler ってでた場合
    1. build folderのCleanをする。Cmd ⌘ + Alt ⌥ + Shift ⇧ + K
    2. http://kazuhei.hatenablog.com/entry/2015/05/19/021939
  10. ひたすら赤四角の自動修正
  11. Errorを消す
  12. Xcode 8 の不要なログを非表示にする方法を実行する

気になったことメモ

  1. closureで引数にラベル使えないっぽい?
  2. 従来は第一引数にラベルなしだったから、呼び出し元を同じようにするならメソッド宣言の部分に _ 入れる(convertでうまくやってくれることを祈る)
  3. closure周りで非同期の場合、@escapingする
  4. Alamofireのメジャーアップデートに対応
    1. migration guide
    2. Alamofire.Method.GET => Alamofire.HTTPMethod.get
  5. enumの小文字化自動対応されてないと地味にめんどい

参考資料

ざっと参考にしたページのリンクをまとめます。特に- Swift 3 を書くときに知っておきたい API デザインガイドラインは非常にわかりやすかったです。