LoginSignup
13
13

More than 5 years have passed since last update.

ネットワーク関連メソッドの返り値は void じゃなくて RAC を使って返す

Posted at

ネットワーク関連のメソッド、どうしても返り値を void にしてしまいますね。

私はそれなりにメソッドを細かく切る派なので、AF で GET するだけのメソッド等をよく作ります。
このようなメソッドは、引数にブロックをとり、返り値を void にするかと思います。

しかし、そのようにすると getHogeHuga などの名前のメソッドで void を返すことになり気持ち悪いですね。
こういうときは ReactiveCocoa を使うと良いです。

HogeClient.m
- (RACSignal *)getHogeHuga {
    return [[AFHTTPRequestOperationManager manager] rac_GET:@"HOGE_URL" parameters:nil];
};

呼び出し側は、

[[hogeClient getHogeHuga] subscribeNext:^(id JSON) {
  // DO SOMETHING
} error:^(NSError *error) {
  // DO ERROR HANDLING
}];

やってることはそんなに変わらないけどそこそこ心洗われる文法になりましたね。

ちなみに Pod は

Podfile
pod "AFNetworking"
pod "ReactiveCocoa"
pod "AFNetworking-RACExtensions"

同じことは PromiseKit でも出来ますがエラーが別ブロックに分かれてくれない(多分)ので RAC で良いと思います(小並感)

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