Pregunta

Utilizo ASINetworkQueue para enviar dos solicitudes, que están en una cola. Mi problema es que no puedo recibir notificaciones cuando una solicitud falla / se realiza.

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 no se llaman. Aunque la solicitud se ejecuta bien y se llama a queueDidFinish.

¿Fue útil?

Solución

Debe configurar el delegado de las solicitudes individuales en lugar de la cola.

Básicamente, si configura los selectores didFinish y didFail en la cola, se llama al delegado de la cola. Si los configura en la solicitud, se llama al delegado de la solicitud (también puede hacer ambas cosas, en cuyo caso se llamará a ambas).

En su caso, donde desea utilizar el mismo delegado para ambas solicitudes, pero diferentes selectores para didFail / didFinish, puedo ver que tendría sentido que se llame al delegado de la cola si no estableció un delegado para la solicitud. Quizás debería agregar esto ... :)

Ben

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top