2018年2月5日月曜日

Swift4 マイグレーション対応メモ

概要

Swift4 へマイグレーションしたときに出たエラーや警告への対応をメモしておきます

環境

  • macOS 10.13.2
  • Xcode 9.2 (9C40b)
  • Cocoapod 1.3.1

The use of Swift 3 @objc inference in Swift 4 mode is deprecated.

警告の詳細は以下の通り

The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "ios-fndb" target.

Targets のビルドの設定を変更すれば OK です
migrate_swift4_1.png

Build Settings を選択して、All と Combined にし Swift3 という単語で検索すると「Swift 3 @objc Inference」という項目が出てくるのでこれを Default に変更しましょう

ちなみに xxxTests と xxxUITests のターゲットでも同じ項目があり警告が出ると思うのでそちらの設定も変更してあげましょう

could not build Objective-C module ‘libxml2’

以下のエラーも同時に出ました

'libxml/xmlversion.h' file not found

これは単純にキャッシュがおかしくなっただけでした
Alt + Shift + Cmd + k ですべてのキャッシュを削除したあと再度ビルドするとエラーはなくなりました

pod update の実施

Swift4 対応しているライブラリがある場合は実施しましょう

最後に

Xcode の機能を使ってプロジェクトを Swift4 にマイグレートしてみました
他にも警告が多数でましたが、あとはポチポチやるだけで全て解決しました

主には duplicated になってしまったメソッドの変更ですが、特に手動でやる作業は自分は発生しませんでした
あまり大きなプロジェクトではなかったので、それのせいかもしれません

0 件のコメント:

コメントを投稿