ASIHTTPRequest: Empfangen Delegierte aus mehreren Anfragen innerhalb eines Netzwerks Warteschlange

StackOverflow https://stackoverflow.com/questions/1049536

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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top