我正在探索 ReactiveCocoa 并尝试看看有什么可能。我遇到的问题是将几个网络请求链接在一起。
我有 2 个调用,第一个获取标识符列表,然后对于每个标识符,我调用以获取与该 id 对应的数据并创建一个模型对象并返回一个对象数组。
我正在使用 AFNetworking 的 RACEExtensions 来发出请求。代码看起来像这样:
- (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 实现这一点的体面示例,尽管我非常有信心它可以做到。