古いSwiftのプロジェクトを変換してXcode9で編集する

By | 2018年4月23日

Xcode9で、Swift2.xで書かれた古いプロジェクトを開こうとすると「Unsupported Swift Version」という警告が表示されます。

Xcode9でswift2.xのプロジェクトを開いた時の警告

現在のXcodeのバージョンは9であり、サポートしているSwiftのバージョンは3以上(最高は4)となっています。したがって、3より低いバージョンのSwiftは実行やコードのバージョン変換も行うことができません。

古いバージョンのコードをXcode9で実行できるようにするには、上記の警告メッセージの通り、Xcode8系で読み込んで、バージョンを3に変換する必要があります。

以下では、この方法について紹介します

Xcode8.3.3のダウンロード

Xcode8系の最新バージョンである Xcode8.3.3 は、appleの公式サイトからダウンロードすることができます。以下のページにアクセスし、ログインして下さい。

https://developer.apple.com/download/more/

ダウンロード可能なファイルの一覧が表示されたら、その中から Xcode8.3.3 を探して下さい。

appleのサイトからXcode8.3.3をダウンロード

ファイル容量が4Gと大きいため、安定した通信環境でダウンロードするといいでしょう。

Xcode8によるSwift3への変換

ダウンロードできたらアーカイブを展開し、変換したいコードを含んでいるプロジェクトを選択して起動して下さい。Xcode9が既にインストールされていても、上書きしなければ問題ありません。

起動したら、以下のような変換を促すメッセージが表示されますので Covert を選択して下さい。

Xcode8でSwiftのバージョンを3に更新する

変更のプレビュー画面が出たらOKを押して完了して下さい。これで、Swiftのバージョンが 3 に変換されます。

または、画面上部のメニューから EditCovertTo Current Swift Syntax を選択することでも変換できます。

Swiftのバージョンを自動更新するメニュー項目

Xcode9で最新版のSwift4に

変換できたら Xcode8.3.3 を終了し、今度は最新の Xcode9 で同じプロジェクトを開きます。

バージョン3以降であれば実行可能なため、起動時には変換を促すメッセージが表示されないかもしれません。したがって、最新版にするには、画面上部のメニューから EditCovertTo Current Swift Syntax を選択します。

今回の変換では、先程とは異なる以下のオプションが表示されます。

Swift4へ変換する際の変換オプション

これは、Swift4で @objc の推論(自動補完)を行わなくなったため、それに対応するための方法を指定するものです。

Minimize Inference を選択すると、@objc が無い状態のコードに変換され、コード中の警告を見て必要な部分に自分で @objc を書き加える必要がありますが、不要な @objc が追加されることがなくバイナリサイズを小さくできます。

Match Swift 3 Behavior は、今まで自動でコンパイラーが @objc を付けていたところ全てに @objc を書き加えます。先程のオプションで行うべき手動の作業が必要ない代わりに、バイナリサイズは大きくなるようです。

詳しくはXcode内のヘルプの項目「Migrate to Swift 4 @objc inference」をご覧ください。

オプションを選択すると、変換プレビューが表示されますので、問題なければ変換を完了させて下さい。

以上の手順で Swift2.x から Swift4 へ変換することができ、新しいXcodeでプロジェクトを編集できます。

参考

ios - Xcode 9 Swift Language Version (SWIFT_VERSION) - Stack Overflow

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*