AFNetworking和批量/串行操作

时间:2012-12-29 08:27:04

标签: ios networking process afnetworking

我正在尝试使用AFNetworking进行一系列网络操作。例如:

[SomeApiICreated doNetworkingStuff success:^(NSString *message)
                           {
                             NSLog(@"Yay!");
                           }
                           failure:^(NSError *error)
                           {
                             NSLog(@"Oh noes!");
                           }];

现在在doNetworkingStuff中,我想做潜在的多个网络任务。例如

  1. 获取应用令牌
  2. if(appTokenGot)step3 else callFailure
  3. 使用app token
  4. 获取内容列表
  5. if(listGot)step5 else callFailure
  6. 但是我还要打电话给doNetworkingStuff2只执行第3步及以上的步骤,基本上让我按需要排队操作,混合和匹配em等等。但是所有人都有一个主要电话我可以说“是的,这有效”,或“有问题”

    NSOperationQueue对此是正确的,或者是“如果这个,那么这个”的嵌套函数阻止了这样做的最佳方法吗?

    任何例子都会有所帮助。

2 个答案:

答案 0 :(得分:1)

为什么不调用其他函数从成功/失败块中传递数据。例如,我使用App.net API。

[[KSADNAPIClient sharedAPI] postPath:@"stream/0/posts"
                              parameters:params
                                 success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         [[KSPostsController sharedController] addPosts:responseObject];
     }
                                 failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         if (block) {
             block([NSArray array], error);
         }
     }];

这样我就不会在成功和失败块中叠加大量逻辑。

答案 1 :(得分:0)

AFAIK,执行此操作的最佳方法是使用完成回调来执行连续调用。请记住,您需要响应对象来执行后续步骤,因此您将在成功回调中接收此对象。