Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

警告

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のサポートを切って使用するべきですが、そうはいかない事情があると思いますので、このような対応も しばらくの間 は仕方がないのではないでしょうか?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away