28
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Swiftのバージョンアップ手順(Swift 4.2→5.0)

Last updated at Posted at 2019-05-27

はじめに

個人アプリでSwiftを4.2から5.0にバージョンアップし、そのときの手順をまとめました。

Xcodeの更新

SwiftはXcodeのバージョンと紐付いているため、App StoreからXcodeをアップデートすることで、Swiftをバージョンアップします。
スクリーンショット 2019-05-27 22.06.35.png

ライブラリの更新

ライブラリ管理ツールと、そのツールで管理しているライブラリを更新します。

エラーや警告が発生しない限り、更新しなくても問題ないことが多いですが、私はSwiftのバージョンアップと同時に更新しています。
ただ、Swiftの新バージョンのリリース直後はライブラリが対応していないこともあります。

私はCocoaPodsとCarthageを使っているので、その更新のみ紹介します。
この記事では省略していますが、必要に応じて「Podsfile」や「Cartfile」を書き換えたり、全ライブラリでなく必要なライブラリのみ更新したりしてください。

# CocoaPodsの更新
# 「/usr/local/bin」にインストールしている場合
$ sudo gem update -n /usr/local/bin cocoapods

# CocoaPodsで管理している全ライブラリの更新
$ pod update

# Carthageの更新
# Homebrewでインストールしている場合
$ brew upgrade carthage

# Carthageで管理している全ライブラリの更新
$ carthage update --platform iOS

警告の解消

Xcodeで発生している警告を解消します。
基本的には警告をダブルクリック→自動修正でOKです。

プロジェクトファイルの更新

以下の警告は、プロジェクトファイルを更新することで解消します。

Swift Conversion
Conversion to Swift 5 is available

警告をダブルクリックします。
スクリーンショット 2019-05-26 23.04.34.png

全ターゲットのチェックがONになっていることを確認し、[Next]ボタンをクリックします。
スクリーンショット_2019-05-26_23_05_16.jpg

[Update]ボタンをクリックします。
スクリーンショット 2019-05-26 23.08.01.png

これで修正が完了です。

自動修正の適用後、プロジェクトファイルは以下のように更新されます。(一部のみ抜粋)

project.pbxproj
- objectVersion = 50;
+ objectVersion = 51;
+ LastSwiftMigration = 1020;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;

スキーマの更新

以下の警告は、スキーマを更新することで解消します。

Validate Project Settings
Update to recommended settings

警告をダブルクリックします。
スクリーンショット 2019-05-27 22.25.24.png

自動修正の適用後、スキーマは以下のように更新されます。(一部のみ抜粋)

{プロジェクト名}.xcscheme
- LastUpgradeVersion = "1010"
+ LastUpgradeVersion = "1020"

Migrate “English.lproj”

Migrate “English.lproj” (Deprecated)
Pods.xcodeproj

警告をダブルクリックします。
スクリーンショット 2019-05-27 22.38.38.png

[Perform Changes]ボタンをクリックします。
スクリーンショット 2019-05-27 20.22.45.png

[Migrate]ボタンをクリックします。
スクリーンショット 2019-05-27 20.25.21.png

これで修正が完了です。

自動修正の適用後、Git上では更新が確認できませんでした。
私がバージョン管理していないファイルが更新されたようです。

Enable Base Internationalization

Enable Base Internationalization
Pods.xcodeproj

警告をダブルクリックします。
スクリーンショット 2019-05-27 22.42.10.png

[Enable]ボタンをクリックします。
スクリーンショット 2019-05-27 20.26.04.png

これで修正が完了です。

自動修正の適用後、こちらもGit上では更新が確認できませんでした。

ACL(アクセス制御レベル)の省略

親と同等のACLを明記しているメソッドは警告が表示されるようになったようです。

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

[Fix]ボタンをクリックして自動修正を適用します。
スクリーンショット 2019-05-26 23.22.17.png

public extension UIViewController {
-   public func showAlert(title: String, message: String, actions: [UIAlertAction]) {
+   func showAlert(title: String, message: String, actions: [UIAlertAction]) {
}

メソッドから public が削除されました。

おわりに

小規模の個人アプリなので、エラーや警告が少なく、自動修正のみで対応が完了しました。

28
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?