Swift3のAlamofireをiOS8サポートのプロジェクトで使う

  • 5
    いいね
  • 0
    コメント

警告

Alamofire 4.1.0でDeployment Targetが iOS8.0 に戻りました :tada:

Alamofire

AlamofireのSwift3版はAlamofire4です。 (2016/11/11現在)
Alamofire4はDeploymentTargetがiOS9.0になっています。

よって、通常ではAlamofire4を使用する場合はiOS8のサポートを切る必要があります。

しかし、いろいろな悲しい事情があり、iOS8のサポートが切れないけれど、Swift3が使いたいという状況があると思います。

URLSessionStreamTask

Alamofire4がiOS8のサポートを切った理由は、URLSessionStreamTaskというiOS9.0+のクラスを使用するためです。

Alamofireの中を覗くと、このクラスは新しく追加されたメソッドで使用されているようです。

つまりこれまで、Alamofireを使っていたiOS8サポートのプロジェクトではこれらのメソッドは使っていないはずです。

そこで、URLSessionStreamTaskに関係する実装をすべて取り外してしまうことでAlamofire4をiOS8で動作するように変えました。

修正作業

AlamofireをcloneしてiOSのDeployment TargetをiOS8.0に下げて、ビルドします。
そこでエラーになった箇所を全部#if HOGEで囲ってビルド対象から除外します。

完成物

https://github.com/tattn/Alamofire

Carthageで既存のiOS8サポートのプロジェクトに入れてみました。

github "tattn/Alamofire" "swift3-ios8"

動作に問題ありませんでした。

本来はこれを機会にiOS8のサポートを切って使用するべきですが、そうはいかない事情があると思いますので、このような対応も しばらくの間 は仕方がないのではないでしょうか?

お困りの方は検討してみてはいかがでしょうか。