2012-10-10 125 views
-2

我有兩個請求(A & B)JSONParser類。 B取決於A的響應。這兩個請求都返回JSON響應。使用這兩個響應將創建一個對象C,然後我想將C返回給視圖控制器。兩個依賴的異步請求iOS

+5

[你有什麼嘗試?](http://whathaveyoutried.com/) – rckoenes

+0

你需要指定你實際要求的。這很簡單,所以你有哪些問題? 我建議你發佈你的代碼,以及你遇到問題的地方。 –

回答

0

這是我的例子。這是非常初步的,但你可以弄清楚如何.... 你也需要添加錯誤檢查。

typedef void(^ResultBlock)(id data); 

- (NSDictionary *)dataFromURL:(NSString *)url { 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; 
    NSURLResponse *response; 
    NSError *error; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    NSDictionary* document = [NSJSONSerialization 
           JSONObjectWithData:responseData //1 
           options:kNilOptions 
           error:&error]; 
    return document; 
} 

- (void)getSomeDataWithCompletion:(ResultBlock)completion { 

    NSOperationQueue *q = [[NSOperationQueue alloc] init]; 
    [q addOperation:[NSBlockOperation blockOperationWithBlock:^{ 
     NSDictionary *response1 = [self dataFromURL:@"server/api1"]; 

     id result = nil; 
     if (response1) { 
      NSDictionary *response2 = [self dataFromURL:[NSString stringWithFormat:@"%@/%@", @"server/api2", [response1 objectForKey:@"someParameter"]]]; 
      result = [response2 objectForKey:@"iFindThisObject"]; 
     } 
     completion(result); 
    }]]; 
} 

- (void)performRequest { 
    [self getSomeDataWithCompletion:^(id data) { 
     NSLog(@"Result %@", data); 
    }]; 
} 
+0

我沒有承諾阻止,但這是我所嘗試過的: – Manpreet