Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@tattn

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

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

完成物

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

github "tattn/Alamofire" "swift3-ios8"

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

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

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

6
Help us understand the problem. What is going on with this article?
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
tattn
Yahoo! JAPANで乗換案内アプリの開発や社内のアプリの課題解決、新規技術の導入サポートなどをしています。 https://zenn.dev/tattn
yahoo-japan-corp
Yahoo! JAPAN を運営しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?