はじめに
個人アプリでSwiftを4.2から5.0にバージョンアップし、そのときの手順をまとめました。
Xcodeの更新
SwiftはXcodeのバージョンと紐付いているため、App StoreからXcodeをアップデートすることで、Swiftをバージョンアップします。
ライブラリの更新
ライブラリ管理ツールと、そのツールで管理しているライブラリを更新します。
エラーや警告が発生しない限り、更新しなくても問題ないことが多いですが、私は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
全ターゲットのチェックがONになっていることを確認し、[Next]ボタンをクリックします。
これで修正が完了です。
自動修正の適用後、プロジェクトファイルは以下のように更新されます。(一部のみ抜粋)
…
- objectVersion = 50;
+ objectVersion = 51;
…
+ LastSwiftMigration = 1020;
…
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
…
スキーマの更新
以下の警告は、スキーマを更新することで解消します。
Validate Project Settings
Update to recommended settings
自動修正の適用後、スキーマは以下のように更新されます。(一部のみ抜粋)
…
- LastUpgradeVersion = "1010"
+ LastUpgradeVersion = "1020"
…
Migrate “English.lproj”
Migrate “English.lproj” (Deprecated)
Pods.xcodeproj
これで修正が完了です。
自動修正の適用後、Git上では更新が確認できませんでした。
私がバージョン管理していないファイルが更新されたようです。
Enable Base Internationalization
Enable Base Internationalization
Pods.xcodeproj
これで修正が完了です。
自動修正の適用後、こちらもGit上では更新が確認できませんでした。
ACL(アクセス制御レベル)の省略
親と同等のACLを明記しているメソッドは警告が表示されるようになったようです。
'public' modifier is redundant for instance method declared in a public extension
Replace 'public ' with ''
public extension UIViewController {
- public func showAlert(title: String, message: String, actions: [UIAlertAction]) {
+ func showAlert(title: String, message: String, actions: [UIAlertAction]) {
}
メソッドから public
が削除されました。
おわりに
小規模の個人アプリなので、エラーや警告が少なく、自動修正のみで対応が完了しました。