3

私は ReactiveCocoa を調査しており、何が可能かを確認しようとしています。私が抱えている問題は、いくつかのネットワーク リクエストを連鎖させることです。

最初に識別子のリストを取得し、次に各識別子に対して、その ID に対応するデータを取得するための呼び出しを行い、モデル オブジェクトを作成してオブジェクトの配列を返します。

AFNetworking の RACExtensions を使用してリクエストを作成しています。コードは次のようになります。

- (RACSignal *) identifersInfo
{
    return [[[[self identifiersSignal] flattenMap:^RACStream *(RACTuple *tuple) {
        RACTupleUnpack(AFHTTPRequestOperation *operation, id responseObject) = tuple;
        NSArray *identifiers = responseObject[@"Identifiers"];
        NSArray *requests = [self httpRequestsWithIdentifiers: identifiers];
        return [self.client rac_enqueueBatchOfHTTPRequestOperationsWithRequests: requests];
    }] collect] map:^id(RACTuple *tuple) {
        RACTupleUnpack(AFHTTPRequestOperation *operation, id responseObject) = tuple;
        Model *model = [[Model alloc] init];
        model.title = responseObject[@"Title"];
        model.description = responseObject[@"Description"];
        model.lastUpdated = responseObject[@"LastUpdated"];
        return model;
    }];
}

identifiersSignal メソッドは次のようになります。

- (RACSignal *) identifiersSignal
{
    return [self.client rac_getPath: @"identifiers" parameters: nil];
}

これは、次のような json 辞書を返します。

{
  "Identifiers": [
    3,
    4,
    21
  ]
}

私は現在、これらの呼び出しを実際に嘲笑しており、それらが独立して動作することを知っています.ReacticeCocoaを使用してそれらをつなぎ合わせようとしています.

ReactiveCocoa を使用してこれを達成する方法について、適切なサンプルを見つけたり見つけたりすることはできませんが、それが可能であると確信しています。

4

1 に答える 1