iOS開発 - Swift3.0でLTMorphingLabelをCocoaPodsで導入時、コンパイルエラーになる問題を解決

現執筆時、2016/11/19(土)の時点で、CocoaPodsでLTMorphingLabelをインストールしたときにコンパイルエラーとなる問題の回避方法をご紹介致します。

コンパイルエラー時のスクリーンショット:

作業環境

OS: OS X El Capitan
Xcode: 8.1
CocoaPods: 1.1.1

解決方法

CocoaPodsのLTMorphingLabelライブラリを取得する際の記述を変更。

変更前:

# Uncomment the next line to define a global platform for your project  
# platform :ios, '9.0'

pod 'LTMorphingLabel'

変更後:

# Uncomment the next line to define a global platform for your project  
# platform :ios, '9.0'
pod 'LTMorphingLabel', :git => 'https://github.com/lexrus/LTMorphingLabel.git', :submodules => true, :branch => 'swift3'

post_install do |installer|  
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = "3.0"
        end
    end
end

変更詳細

1. 変更を行った背景
1.変更前の記述だと、CocoaPodsがLTMorphingLabelのmasterブランチから取得してしまう。
2.現段階でのmasterブランチはSwift3.0対応の修正がマージされていない。
3.Swift3.0用のブランチが存在するので、Swift3.0用のブランチから取得するよう指定。

LTMorphingLabel公式リポジトリ

2. 変更後の記述に関して

pod 'LTMorphingLabel', :git => 'https://github.com/lexrus/LTMorphingLabel.git', :submodules => true, :branch => 'swift3'  
# :git →  gitから取得することを宣言。
# :submodules => true → 対象リポジトリをサブモジュールとして取得することを宣言。
# :branch => ‘swift3’ → 対象リポジトリのブランチを指定。

3. 変更後の追加されている記述に関して

  
post_install do |installer|  
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = "3.0"
        end
    end
end

→ 下記の記事より、Swiftのバージョンを指定しないといけないようです。 http://blog.ch3cooh.jp/entry/20160915/1473871446