2009-06-21 41 views
50

Estoy intentando actualizar mi aplicación de iPhone para que funcione con OS 3.0. Tengo un UIWebView que muestra una página bien. Pero cuando hago clic en un enlace, llama a mi delegado para didFailLoadWithError y el error es que la operación no se pudo completar. (NSURLErrorDomain error -999.) Comprobé que esto todavía funciona con OS 2.2.1, por lo que es algo cambiado en 3.0.Cómo soluciono el error NSURLErrorDomain -999 en iPhone 3.0 OS

¿Alguna idea?

+0

detalles como qué página se encuentran en la UIWebView (si es público) y cómo configurar este punto de vista y delegado en el código podría ser útil. – dlamblin

+0

Ahora estoy de viaje y recibiré más detalles cuando regrese. Es una página web pública. Al seguir excavando, parece que puede estar relacionado con el hecho de que una página no se cargue completamente antes de que se reciba la próxima solicitud. No he tenido la oportunidad de probar eso todavía. Si ese es el problema, lo actualizaré. –

+0

Creo que debe volver a visitar cuál se considera la respuesta correcta – hfossli

Respuesta

115

Pude encontrar la respuesta here.

Este hilo contenía esta descripción para este error: This error may occur if an another request is made before the previous request of WebView is completed...

trabajé alrededor de esto haciendo caso omiso de este error y continuar dejando que la vista web para cargar.

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

Es mejor utilizar la constante NSURLErrorCancelled en lugar del valor literal -999. – hasseg

+0

esto me cambió mucho búsqueda, gracias! – favo

+3

Este error también puede ser un olor a código. Me deshice de él no ignorándolo, sino moviendo un método de activación de carga llamado 'viewDidAppear' (que podría dispararse varias veces mientras se carga la vista web) en' viewDidLoad'. – clozach

28

NSURLErrorCancelled (-999)

"devuelve cuando se cancela una carga asíncrona. Un delegado marco Web Kit recibirá este error cuando se realiza una operación de cancelación de un recurso de carga. Tenga en cuenta que una o NSURLConnection El delegado NSurnLDownload no recibirá este error si la descarga se cancela ".

Para mi situación (y probablemente el suyo) esta puede ser ignorado:

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

las dos respuestas anteriores era correcto> Sólo hacer una declaración si la solicitud de carga provoca la cancelación.

También quiero señalar que, las personas no se olvide de poner NSLog dentro de su didFailLoadWithError método , esto se puede evitar la pérdida de una gran cantidad de tiempo mediante la detección de la emisión a la derecha en!

Así que aquí es la solución final con todo lo mencionado anteriormente:

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