Edited at

Xcode10.2とSwift5対応


1.Xcode10.2をインストールする

まずは、ダウンロードページから、Xcode_10.2.xipをダウンロードしてインストールします。(macOSは10.14.3以降である必要があります)


2.Swift Language VersionをSwift5に変更

Xcode10.2がインストールできたら、Build SettingsのSwift Language VersionSwift5に変更します。

Swift_Version.png


3.警告対応

ビルドしたところ、いくつか警告が出たので対応していきます。


1) Localizations非推奨の警告

<警告>

スクリーンショット 2019-05-07 12.33.08.png

Localizations非推奨の警告が出ていました。Xcode 10.2 Release NotesのLocalizationに記載されていましたが、廃止予定のローカライゼーション識別子を使用していると警告が出るようになりました。移行する必要があるので、警告をクリックして、Migrateボタンで移行します。(※下記イメージを参照)

スクリーンショット 2019-05-07 12.32.58.png

マイグレーション前にあったdeprecatedになったLacalizationsの設定が解消されます。

マイグレーション
画面イメージ

実行前
スクリーンショット 2019-05-07 12.35.47.png

実行後
スクリーンショット 2019-05-07 12.33.46.png


2) public修飾子が付いたextensionの警告

<警告>

'public' modifier is redundant for instance method declared in a public extension

この警告はpublic修飾子がついているextension内で、拡張したメソッドにもpublic修飾子が付いていたため、それが冗長だと警告しているものです。

例えば以下のようなコードで警告が表示されていました。

スクリーンショット 2019-04-26 11.27.21.png

public extensionでUIScreenの拡張メソッドを作成しているのですが、originalSize(scaledSize:)メソッドにもpublicが付いているため、以下のようにメソッドのpublic修飾子を削除すれば警告は消えます。

<対応後>

public extension UIScreen {

func originalSize(scaledSize: CGFloat) -> CGFloat {
return scaledSize / UIScreen.main.scale
}
}

私の関わっているプロジェクトでのXcode10.2とSwift5対応は以上でした。

他の方々の対応する際のご参考になればと思います。