2014-02-14 2 views
0
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    [self.responseData setLength:0];(URL1) 
    self.jsonData = [[NSMutableData alloc]init];(URL2) 
    self.genderData = [[NSMutableData alloc]init];(URL3) 
} 

Я хочу отправить несколько URL-адресов за один раз, какой процесс получит отклик ..?Методы делегатов NSURLConnection

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSLog(@"connectionDidFinishLoading"); 
    NSLog(@"Succeeded! Received %d bytes of data",[self.responseData length]); 
    NSError * error; 
    id result = (NSMutableArray *)[NSJSONSerialization JSONObjectWithData:self.jsonData options:kNilOptions error:&error]; 
    if (error) 
    { 
     NSLog(@"DATA LOAD ERROR"); 

    } 
    else 
    { 
     if([result isKindOfClass:[NSArray class]]) 
     { 

      titlesArray = result; 
     } 
     else 
     { 
      titlesDic = result; 
     } 

    } 

    [self genderURLMethod]; 


} 

Это еще один делегат Метод

+0

Вы можете захотеть использовать 2 различных экземпляров NSURLConnection и проверьте, какой из его 'connectionDidFinishLoading:'. –

+0

Другой способ сделать это - использовать AFNetworking, он использует блоки завершения для обработки ответа. Это может быть лучше при использовании нескольких запросов. – geminiCoder

ответ

0

При работе с NSURLConnection, я склонен идти один из двух способов.

  1. Всегда используйте для каждого делегата другой класс. Таким образом, экземпляр делегата должен беспокоиться о 1 URL.

  2. Используйте [[connection originalRequest] URL], чтобы различать разные URL-адреса.

Пример:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSString *URLString = [[[[connection originalRequest] URL] absoluteString]; 
    if ([URLString isEqualToString:MY_URL_1]) { 
     // Handle the response for the first URL. 
    } else if ([URLString isEqualToString:MY_URL_2]) { 
     // Handle the response for the second URL/ 
    } 
} 
Смежные вопросы