XCode 8に移行した際、Swiftプロジェクトでトラブったのでその場しのぎ的な対応ですが残しておきます。
問題点
まず、大きな問題(?)として、以下のことが挙げられます。
- Swift 2.3 プロジェクトとSwift 3 プロジェクトは混在できない。
- iOS 10 SDKで 破壊的変更がある(定数名の変更やオプショナル型の変更だったり)
次に、CocoaPodsでライブラリを管理しているのですが、現在、Swift 2.3で書かれたものが多いです。
Swift 3にマイグレーションせずに使用する場合、1から、自身のプロジェクトはSwift 2.3である必要があります。
Swift 3で書かれたライブラリはSwift2.3時代のバージョンを指定して使用する必要があります。
ただ、2のことから、Swift2.3ライブラリであっても、一部修正が発生する可能性があります。
ビルドを通すまでにしたこと
-
自身のプロジェクトのSwiftのバージョンを2.3にする。
Targets -> (プロジェクト名) -> Use Legacy Swift Launguage Version を Yesにする。 -
latestバージョンがSwift 3で書かれていると分かるライブラリはSwift2.3で書かれたバージョンを指定する。
-
Podfileの最後に以下の記述をして、自動的に各ライブラリがSwift 2.3でビルドされるようにする。
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '2.3' end end end
-
pod installする。
-
ビルドする。
-
iOS 10 SDKに対応するため、ライブラリのコードを修正する。
最後に
ライブラリのコードを直接修正するのは避けたいですが、その場しのぎということで。
当面はSwift 2.3なんですかね。