ASIHTTPRequest: получение делегатов от нескольких запросов в сетевой очереди - PullRequest
1 голос
/ 26 июня 2009

Я использую ASINetworkQueue для отправки двух запросов, находящихся в очереди. Моя проблема в том, что я не могу получать уведомления, когда запрос не выполнен / выполнен.

Код:

    [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 не вызываются. Хотя запрос работает нормально и вызывается queueDidFinish.

1 Ответ

4 голосов
/ 26 июня 2009

Вам нужно установить делегат отдельных запросов, а не очередь.

Обычно, если вы устанавливаете селекторы didFinish и didFail в очереди, вызывается делегат очереди. Если вы установите их в запросе, будет вызван делегат запроса (вы также можете сделать оба, и в этом случае оба будут вызваны).

В вашем случае, когда вы хотите использовать один и тот же делегат для обоих запросов, но разные селекторы для didFail / didFinish, я вижу, что имеет смысл вызывать делегат очереди, если вы не устанавливали делегат для запрос. Возможно, я должен добавить это ...:)

Ben

...