Pergunta

Eu uso ASINetworkQueue para enviar dois pedidos, que estão em uma fila. Meu problema é que eu não sou capaz de receber notificações quando um pedido falhar / é feito.

Código:

    [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 não são chamados. Embora o pedido corre bem e queueDidFinish é chamada.

Foi útil?

Solução

Você precisa definir o delegado dos pedidos individuais em vez de fila.

Basicamente, se você definir os seletores didFinish e didFail na fila, delegado da fila é chamado. Se você colocá-los no pedido, delegado do pedido é chamado (Você também pode fazer as duas coisas, caso em que ambos são chamados).

No seu caso, onde você quiser usar o mesmo delegado para ambos os pedidos, mas diferentes seletores para didFail / didFinish, eu posso ver isso faria sentido para delegado da fila a ser chamado se você não definir um delegado para o pedido. Talvez devo acrescentar isso ...:)

Ben

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top