Question

J'utilise ASINetworkQueue pour envoyer deux requêtes, qui sont dans une file d'attente. Mon problème est que je ne peux pas recevoir de notifications lorsque une requête échoue / est terminée.

Code:

    [networkQueue cancelAllOperations];
    [networkQueue setShowAccurateProgress:YES];
    [networkQueue setUploadProgressDelegate:self.progressIndicator];
    [networkQueue setDelegate:self];
    [networkQueue setQueueDidFinishSelector:@selector(queueDidFinish)];


    NSURL *urlAttachment = [NSURL URLWithString:@"http://localhost/test1.xml"]];
    ASIFormDataRequest *requestFile = [[[ASIFormDataRequest alloc] initWithURL:urlAttachment] autorelease];
    [requestFile setFile:filePath forKey:@"attachment[test]"];
    [requestFile setDidFailSelector:@selector(test1WentWrong)];
    [requestFile setDidFinishSelector:@selector(test1Done)];
    [networkQueue addOperation:requestFile]; //queue is an NSOperationQueue

    NSURL *url = [NSURL URLWithString:@"http://localhost/test2.xml"]];
    ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
    [request setPostValue:test.filename forKey:@"filename[test]" ];
    [request setDidFailSelector:@selector(test2WentWrong)];
    [request setDidFinishSelector:@selector(test2Done)];
    [networkQueue addOperation:request]; //queue is an NSOperationQueue

    [networkQueue go];

test1WentWrong, test1Done, test2WentWrong, test2Done ne sont pas appelés. Bien que la requête s'exécute correctement et que queueDidFinish soit appelée.

Était-ce utile?

La solution

Vous devez définir le délégué des requêtes individuelles plutôt que la file d'attente.

En gros, si vous définissez les sélecteurs didFinish et didFail dans la file d'attente, le délégué de la file d'attente est appelé. Si vous les définissez sur la demande, le délégué de la demande est appelé (vous pouvez également faire les deux, auquel cas les deux sont appelés).

Dans votre cas, où vous souhaitez utiliser le même délégué pour les deux demandes, mais des sélecteurs différents pour didFail / didFinish, je peux voir qu'il serait logique que le délégué de la file d'attente soit appelé si vous ne définissez pas de délégué pour la demande. Je devrais peut-être ajouter ceci ...:)

Ben

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top