- iOS
- 2017-10-03 - 更新:2018-02-15
Xcode 9 Swift 4がリリースされたので、アップデートしてみました。
その際のマイグレーションについて参考になるかは分かりませんが、
私が開発しているアプリでの作業をメモしておきます。
今回のアプリはGoogleMapsとRealm、SVProgressHUDを使用したアプリですので
そのAPIパッケージもアップグレードする必要があります。
ターミナルでプロジェクトのディレクトリに移動します。
cd <path-to-project>
pod updateを実行します。
pod update
インストールしていたAPIがアップグレードされます。
iOSのターゲットを9.0としていたため、エラーが解消されなかったのでターゲットを10.0に変更しました。
Xcodeでプロジェクトを開くと色々と警告が表示されていました。
ビルドしてももちろん通らないので、修正をしていきます。
まずはPods project > Validate Project Settings > Update to recommended settingsをクリックします。
すると次のような画面が表示されると思いますので、[Perform Chenges]をクリックします。
処理が終了し、ひとまずビルドしてみるとSucceeded。Realmのエラーが消えました。
まだ警告が出ていますので、○○ project > Validate Project Settings > Update to recommended settingsをクリックします。
先ほどと同じような画面が表示されますので、同じく[Perform Chenges]をクリックします。
これでまた1つ警告が消えました。
まだSwift 4の警告が出ていますが、ひとまずビルドして端末にインストールできるようになりました。
Swift 4について、特にAPIを使用しないアプリであれば、コンバートするだけで移行が完了するようです。
○○ project > Swift Conversion > Conversion to Swift 4 is availableをクリックします。
Select targets to convert:というウィンドウが表示されます。
コンバートが必要なものに自動でチェックが入っているようなので、そのまま[Next]をクリックします。
次にSwift 4 @obj inference:というオプションを聞いてきますので、推奨されているMinimize Inferenceを選択したまま[Next]をクリックします。
次に書き換えられる内容が表示されますので、確認して[Save]をクリックします。
これでコンバートは完了ですが、ビルドするとDependency Analysis Warningが発生します。
解決するにはビルドセッティングの[Swift Compiler – Code Generation]-[Swift 3 @obj inference]のところを「Default」に変更します。
これでビルドが通るようになります。
Xcode: 9.0
Swift: 3.1
OS: Sierra 10.12