LoginSignup
0
0

More than 5 years have passed since last update.

AFHTTPRequestOperationManagerをAFNetworking 3.x向けに変更する

Last updated at Posted at 2016-04-15

翻訳したまま放置していましたが、以下のエントリからの続き。
個人的なメモにも近いものになると思います。

◆ AFNetworking 3.xへの対応
http://qiita.com/Takumi_Mori/items/4353f1d40b8d92b74a2c

この記事の対象になる人

AFHTTPRequestOperationManagerのサブクラスを独自に作っていて、
今回のAFNetworking3.xによるNSOperationQueueの削除によって書き換えが必要になった人
つまり、私です。
また、いまだにiOS6以前をサポートしないといけない方はそもそもNSURLSessionが使えないので対象外です。

AFHTTPSessionManagerを利用する

以下のように書き換えていきます。

  • AFHTTPRequestOperationManagerを継承していた箇所を、AFHTTPSessionManagerに変更する
  • (AFHTTPRequestOperation *)を戻り値にしている箇所は、(NSURLSessionDataTask *)が返ります。
  • HTTPRequestOperationWithRequest:success:failure:dataTaskWithRequest:completionHandlerに変更します。

ResponseSerializerを指定していた場合

.responseSerializerに対してsetAcceptableContentTypesができなくなっています。
以下のように、一度ResponseSerializerを作成して設定します。

id responseSerializer = [AFJSONResponseSerializer serializer];
[responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"text/html", @"application/json", nil]];
self.sessionManager.responseSerializer = responseSerializer;

終わり

まだいろいろと検証中ではありますが、意外とこの程度の変更で普通に動作しています。
あと、地味にNSURLSessionUploadTaskのprogressが、(NSProgress * __autoreleasing *)progressから(void (^)(NSProgress *uploadProgress)) uploadProgressBlockという形でblocksを渡す形に変更されてしまってるのも注意しないといけませんね。

0
0
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
0
0