概要
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 です
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 件のコメント:
コメントを投稿