ASIHTTPRequest - Запрос:Получать делегаты от нескольких запросов в сетевой очереди

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

Вопрос

Я использую 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 .

Это было полезно?

Решение

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

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

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

Ben

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top