Domanda

Voglio utilizzare la libreria ASIHttprequest per scaricare alcuni file, sto testando con il loro codice e non funziona mentre lo stesso codice funziona sul loro campione

questo è il mio codice per chiamare la loro vista

QueUeViewController *queueViewController = [[QueUeViewController alloc] initWithnibName:@"Queue" bundle: nil];Self.View AddSubView: QueueViewController.View];

Questo il codice per effettuare la richiesta

- (IBAction)fetchThreeImages:(id)sender
{
    [imageView1 setImage:nil];
    [imageView2 setImage:nil];
    [imageView3 setImage:nil];

    [networkQueue cancelAllOperations];
    [networkQueue setDownloadProgressDelegate:progressIndicator];
    [networkQueue setRequestDidFinishSelector:@selector(imageFetchComplete:)];
    [networkQueue setShowAccurateProgress:[accurateProgress isOn]];
    [networkQueue setDelegate:self];

    ASIHTTPRequest *request;
    request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/logo.png"]] autorelease];
    [networkQueue addOperation:request];

    request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/trailsnetwork.png"]] autorelease];
    [networkQueue addOperation:request];

    request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/sharedspace20.png"]] autorelease];
    [networkQueue addOperation:request];

    [networkQueue go];

}


- (void)imageFetchComplete:(ASIHTTPRequest *)request
{
    UIImage *img = [UIImage imageWithData:[request responseData]];
    if (img) {
        if ([imageView1 image]) {
            if ([imageView2 image]) {
                [imageView3 setImage:img];
            } else {
                [imageView2 setImage:img];
            }
        } else {
            [imageView1 setImage:img];
        }
    }
}

Sembra che la coda sia stata impostata correttamente ma il metodo imageFetchComplete non viene chiamato al termine del download.

È stato utile?

Soluzione 2

Ho risolto il problema, il problema era che non ero allocato networkQueue.

Stavo allocando networkQueue in awakefromnib e non veniva chiamato.Quindi alloco networkQueue nel metodo del clic del pulsante.Ciò ha risolto il problema.

Altri suggerimenti

Prova a impostare requestDidFailSelector sulla tua istanza di ASINetworkQueue, così come l'impostazione didFinishSelector E didFailSelector su ogni istanza di ASIHTTPRequest.Chiama NSLog() da ciascuno di questi metodi di callback nel tuo delegato per vedere cosa sta succedendo.

Tieni presente che abilitando showAccurateProgress sul tuo ASINetworkQueue, viene eseguita una richiesta HEAD aggiuntiva per ogni richiesta elaborata dalla coda.Questo a volte può non essere l'ideale in un contesto mobile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top