2009-06-21 16 views
50

Sto tentando di aggiornare la mia app iPhone per funzionare con l'OS 3.0. Ho un UIWebView che mostra una pagina fine. Ma quando faccio clic su un collegamento, si chiama my delegate per didFailLoadWithError e l'errore è che l'operazione non può essere completata. (Errore NSURLErrorDomain -999.) Ho verificato che questo funziona ancora con OS 2.2.1, quindi è qualcosa cambiato in 3.0.Come posso correggere l'errore NSURLErrorDomain -999 nel sistema operativo iPhone 3.0

Qualche idea?

+0

dettagli come quale pagina si trovano nella UIWebView (se è pubblico) e come si imposta questo punto di vista e delegato in codice potrebbe essere utile. – dlamblin

+0

Ora sono in viaggio e riceverò più dettagli quando torno. È una pagina Web pubblica. In ulteriori operazioni di scavo sembra che possa essere correlato a una pagina non completamente caricata prima che venga ricevuta la richiesta successiva. Non ho ancora avuto la possibilità di provarlo. Se ciò dimostra che il problema verrà aggiornato. –

+0

Penso che sia necessario rivisitare quale è considerata la risposta corretta – hfossli

risposta

115

Sono stato in grado di trovare la risposta here.

Questo thread conteneva questa descrizione per questo errore: This error may occur if an another request is made before the previous request of WebView is completed...

Ho lavorato intorno a questo ignorando questo errore e lasciar webview continuare a caricare.

if ([error code] != NSURLErrorCancelled) { 
//show error alert, etc. 
} 
+25

Meglio usare la costante NSURLErrorCancelled al posto del valore letterale -999. – hasseg

+0

questo mi ha cambiato così tanto ricerca, grazie! – favo

+3

Questo errore potrebbe anche essere un odore di codice. Non mi sono liberato ignorandolo, ma spostando una chiamata al metodo di attivazione del caricamento da 'viewDidAppear' (che poteva essere attivata più volte durante il caricamento della vista Web) in' viewDidLoad'. – clozach

28

NSURLErrorCancelled (-999)

"restituito quando un carico asincrona viene annullata. Un delegato framework Web Kit riceverà questo errore quando si esegue un'operazione di annullare su una risorsa di carico. Si noti che un NSURLConnection o NSURLDownload delegate non riceverà questo errore se il download è stato annullato. "

per la mia situazione (e probabilmente il vostro) questo può essere ignorato:

if([error code] == NSURLErrorCancelled) return; // Ignore this error 
9

queste due risposte erano corrette> Basta fare un ritorno se la richiesta di carico provoca la cancellazione.

Anche io voglio sottolineare che, la gente non dimenticate di mettere un NSLog all'interno del vostro didFailLoadWithError metodo , questo può evitare di perdere un sacco di tempo individuando il problema a destra su!

Così qui è la soluzione finale con tutto quello che ho citato sopra:

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"ERROR : %@",error); //Get informed of the error FIRST 
    if([error code] == NSURLErrorCancelled) 
     return; 
} 
Problemi correlati