2012-12-29 39 views
2

我正在嘗試使用AFNetworking執行一系列網絡操作。例如:AFNetworking和批量/串行操作

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

現在在doNetworkingStuff中,我想要執行潛在的多個網絡任務。例如

  1. 獲取應用程序令牌
  2. 如果(appTokenGot)第3步其他callFailure
  3. 東西使用的應用程序令牌的
  4. 獲取列表
  5. 如果(listGot)STEP5其他callFailure

但我想也打電話doNetworkingStuff2,只做第3步和以上,基本上讓如果我需要他們排隊操作,混合和匹配時間,等等。但所有與主要電話,我可以說「是的,這工作」,或「有問題」

NSOperationQueue是正確的爲此,或者是「如果這個,那麼這個」的嵌套函數阻止這樣做的最佳方式?

任何示例都會有幫助。

回答

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

這樣我就不會在成功和失敗塊中疊加大量的邏輯。

0

AFAIK,這樣做的最好方法是使用完成回調進行連續調用。請記住,您需要響應對象執行連續步驟,因此您在成功回調中接收此對象。