LoginSignup
5
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-11-10

警告

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で囲ってビルド対象から除外します。

完成物

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

github "tattn/Alamofire" "swift3-ios8"

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

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

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

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6