【Swift】【carthage update error】CarthageでFuziを入れようとしたら実行でハマった件

carthage updateすると大量のエラーを吐く症状

「carthage update」を実行すると怒涛のごとくエラーを吐く問題。carthage初心者にとってなにが悪いのかよくわからない。carthageでrealmは普通に実行できる。でも入れたいライブラリを「carthage update」を実行すると、どうしてもエラーが吐く。入れようとしたライブラリはFuziというSwiftのHTMLParserです。ドキュメントを見たときに素人のぼくでも入れることができそうで今回アプリ開発で重要な役割を担う部分だったのでどうしても入れたかったのです。

エラーの可能性として

1. 入れたいライブラリのソースが間違っている
2. carthageのインストール失敗
3. carthageになにかしらの追加が必要

2はrealmのライブラリを導入することができたので可能性としては低い。1か3だと思っていましたが両方違いました。

こちらが超便利なSwift HTMLParser Fuziさんです。
https://github.com/cezheng/Fuzi/blob/master/README-ja.md

carthage updateすると大量のエラーの解決方法

結論から先に言うと解決方法はSwiftのバージョンを確認しましょう。入れたいライブラリと現在のSwiftのバージョンが合っていないとエラーになります。僕の場合Swift2からSwift3にバージョンアップしたところ解決しました。

しっかりとエラーを確認すると見慣れない部分でエラーを出していました。それは「open class」です。アクセス修飾子に見慣れない「open」の文字が追加されていました。アクセス修飾子「open」はSwift3から導入されたものです。もしやと思いXcodeをアップデートしてSwift3にして「carthage update」を実行したところ無事成功しました。

Swiftバージョンの確認方法

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -v

「carthage update」が成功するとframeworkを生成する

ぼくはCarthage初心者なので「carthage update」を実行してどうなると成功かわかりませんでした。今回わかったことは「carthage update」を実行してframeworkが生成されていれば成功です。逆に「carthage update」を実行してもframeworkが生成されなければ失敗です。carthageの実行に失敗するとCarthage/Builldの中身は空になります。

今日のわかった

たまに無視してもよいエラーもあるのでついついエラー内容を確認せずに先に進もうとしてしまいました。ハマったときはエラー内容をしっかり確認することが重要ですね。ライブラリを入れるときにはSwift version要チェックです。