2013-05-06 2 views
5

J'ai deux requêtes démarrant l'une après l'autre. Démarrage de la demande comme ceciDifférencier les objets NSURLConnection dans le délégué

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com"]]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
NSURLConnection * connection = [[NSURLConnection alloc] 
           initWithRequest:request 
           delegate:self startImmediately:NO]; 
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] 
         forMode:NSDefaultRunLoopMode]; 
[connection start]; 

et une autre demande commençant comme ceci.

NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.apple.com"]]; 
NSURLRequest *request1 = [NSURLRequest requestWithURL:url1 cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
NSURLConnection *connection1 = [[NSURLConnection alloc] initWithRequest:request1 delegate:self]; 
[connection1 release]; 

Comment puis-je faire la différence entre ces deux méthodes de délégué?

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

Vous ne voulez pas conserver de variable de classe supplémentaire à cette fin.

+0

Vérifiez si l'argument 'connection' dans la méthode de rappel est égal aux variables' connection' ou 'connection1' dans votre code. – Markus

Répondre

4

Il est simple:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    if (connection == connection1) 
    { 
     //It's for connection1. 
    } 
    else if (connection == connection2) 
    { 
     //It's for connection2. 
    } 
} 

Vous pouvez passer par ce beau SO Question: Managing multiple asynchronous NSURLConnection connections

+0

Dans ce cas, je dois conserver deux variables de classe Connection1 et Connection 2, car les deux connexions peuvent fonctionner simultanément. Et j'essaie d'éviter ces variables supplémentaires. – NaXir

+0

Dans ce cas, puis-je vous demander pourquoi utilisez-vous cette vieille approche? – Bhavin

+0

Je l'ai trouvé facile à faire. Voulez-vous partager la nouvelle approche? – NaXir

2

prendre vos NSURLConnection objets dans le fichier .h et vérifiez dans votre méthode de délégué que Markus a suggéré.

ou

Sous votre NSURLConnection et vous pouvez ajouter tag propriété à la classe de connexion tout en créant, en vous déléguer des méthodes pour vérifier balise appropriée. Vous pouvez trouver working tutorial here.

Questions connexes