Domanda

Uso ASINetworkQueue per inviare due richieste, che sono in coda. Il mio problema è che non riesco a ricevere notifiche quando una richiesta ha esito negativo / è stata eseguita.

Codice:

    [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 non vengono chiamati. Anche se la richiesta viene eseguita correttamente e viene chiamato queueDidFinish.

È stato utile?

Soluzione

Devi impostare il delegato delle singole richieste piuttosto che la coda.

In pratica, se si impostano i selettori didFinish e didFail sulla coda, viene chiamato il delegato della coda. Se le imposti sulla richiesta, viene chiamato il delegato della richiesta (puoi anche fare entrambe le cose, nel qual caso entrambe vengono chiamate).

Nel tuo caso, in cui desideri utilizzare lo stesso delegato per entrambe le richieste, ma selettori diversi per didFail / didFinish, vedo che avrebbe senso chiamare il delegato della coda se non avessi impostato un delegato per la richiesta. Forse dovrei aggiungere questo ... :)

Ben

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top