2011-05-31 72 views
3

我正在开发一个应用程序,它会向Facebook服务器请求某些用户的个人资料图片URL,但我不知道我将拥有多少用户(可能是2或可能是20)。我是否应该使用带有循环和同步请求的ASIHTTPRequest,或带有循环的API图(带iOS的Facebook SDK)?ASIHTTPRequest-multiple request

回答

7

尝试使用ASINetworkQueue。它将允许您创建一个仍然可以异步启动的ASIHTTPRequests队列。例如

- (void)getImages 
{ 
    if(!self.queue) 
     self.queue = [[[ASINetworkQueue alloc] init] autorelease]; 

    NSArray* urlStringsToRequest = [NSArray arrayWithObjects:@"http://www.example.com/image1.png",@"http://www.example.com/image2.png",nil]; 
    for(NSString* urlString in urlStringsToRequest) 
    { 
     NSURL *url = [NSURL URLWithString:urlString]; 
     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
     [request setDelegate:self]; 
     [request setDidFinishSelector:@selector(requestDone:)]; 
     [request setDidFailSelector:@selector(requestWentWrong:)]; 
     [self.queue addOperation:request]; 
    } 

    [self.queue go]; 
} 

- (void)requestDone:(ASIHTTPRequest*)req 
{ 
    UIImage* image = [UIImage imageWithData:[req responseData]]; 

    [imageArray addObject:image]; 
} 

- (void)requestWentWrong:(ASIHTTPRequest*)req 
{ 
    NSLog(@"Request returned an error %@",[req error]); 
} 
+0

是的但我想要结果呈现它们。我可以用asfintwork队列使用didfinish吗? – BlackM 2011-05-31 21:34:09

+0

事实上,请参阅https://gist.github.com/150447了解简单(但完整)的示例。 – bensnider 2011-05-31 21:34:45

+0

您可以将didFinishSelector放入队列或每个单独的请求。要么工作。我更新了答案,说明如何从请求中获取图片。 – DHamrick 2011-05-31 21:39:18