2

我正在尝试使用AFNetworking. 例如:

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

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

  1. 获取应用令牌
  2. if ( appTokenGot) step3 else callFailure
  3. 使用应用令牌获取东西列表
  4. if ( listGot) step5 否则callFailure
  5. 等等

但我还想调用一个doNetworkingStuff2只执行第 3 步及以上的操作,基本上让我根据需要将操作排队,混合和匹配它们等。但所有这些都只需一个主调用,我可以说“是的,这行得通”,或“有问题”

这样做是NSOperationQueue正确的,还是“如果这个,那么这个”的嵌套函数阻止了最好的方法?

任何示例也会有所帮助。

4

2 回答 2

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);
         }
     }];

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

于 2012-12-29T15:58:49.830 回答
0

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

于 2012-12-30T10:48:35.717 回答