ASIHTTPRequest: Empfangen Delegierte aus mehreren Anfragen innerhalb eines Netzwerks Warteschlange
-
20-08-2019 - |
Frage
Ich verwende ASINetworkQueue zwei Anfragen zu senden, die in einer Warteschlange befinden. Mein Problem ist, dass ich nicht in der Lage bin Benachrichtigungen zu erhalten, wenn eine Anforderung fehlschlägt / gemacht wird.
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 nicht genannt werden. Obwohl die Anfrage läuft gut und queueDidFinish aufgerufen wird.
Lösung
Sie müssen die Delegierten der einzelnen Anfragen setzen, anstatt die Warteschlange.
Grundsätzlich, wenn Sie die didFinish und didFail Selektoren in der Warteschlange gesetzt ist, wird die Delegierten Warteschlange genannt. Wenn Sie sie auf Antrag gesetzt, delegiert die Anforderung der genannt wird (Sie können auch beides, wobei in diesem Fall beide genannt werden).
In Ihrem Fall, in dem Sie die gleichen Delegierten für beide Anfragen verwenden möchten, aber verschiedene Selektoren für didFail / didFinish, kann ich sehen, es Sinn machen würde, für die Delegierten Warteschlange aufgerufen werden, wenn Sie nicht einen Delegaten festgelegt haben für die Anfrage. Vielleicht sollte ich diese hinzufügen ...:)
Ben