2009-06-21 5 views
50

J'essaie de mettre à jour mon application iPhone pour qu'elle fonctionne avec OS 3.0. J'ai un UIWebView qui montre une page très bien. Mais quand je clique sur un lien, il appelle mon délégué pour didFailLoadWithError et l'erreur Operation is could not complete. (Erreur NSURLErrorDomain -999.) J'ai vérifié que cela fonctionne toujours avec OS 2.2.1, donc quelque chose a changé dans 3.0.Comment réparer l'erreur NSURLErrorDomain -999 dans l'OS de l'OS 3.0

Des idées?

+0

détails comme page qui sont dans le UIWebView (si elle est publique) et la façon dont vous configurez ce point de vue et délégué dans le code pourrait être utile. – dlamblin

+0

Je suis sur la route maintenant et je recevrai plus de détails à mon retour. C'est une page web publique. En creusant plus loin il semble qu'il puisse être lié à une page n'étant pas complètement chargée avant que la demande suivante soit reçue. Je n'ai pas encore eu l'occasion de le tester. Si cela s'avère être le problème, je le mettrai à jour. –

+0

Je pense que vous devez revisiter ce qui est considéré comme la bonne réponse – hfossli

Répondre

115

J'ai été en mesure de trouver la réponse here.

Ce fil contenait cette description pour cette erreur: This error may occur if an another request is made before the previous request of WebView is completed...

J'ai travaillé autour de ce en ignorant cette erreur et de laisser le WebView continuer à charger.

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

Mieux vaut utiliser la constante NSURLErrorCancelled au lieu de la valeur littérale -999. – hasseg

+0

cela m'a tellement changé de recherche, merci! – favo

+3

Cette erreur peut également être une odeur de code. Je m'en suis débarrassé non pas en l'ignorant, mais en déplaçant un appel de méthode load-triggering de 'viewDidAppear' (qui pourrait se déclencher plusieurs fois en chargeant la vue web) dans' viewDidLoad'. – clozach

28

NSURLErrorCancelled (-999)

« returned lorsqu'une charge asynchrone est annulée. Un délégué cadre de Web Kit recevra cette erreur lorsqu'il effectue une opération d'annulation sur une ressource de chargement. Notez qu'un NSURLConnection ou Le délégué NSURLDownload ne recevra pas cette erreur si le téléchargement est annulé. "

Pour ma situation (et probablement le vôtre) qui peut être différent:

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

Les deux réponses ci-dessus était CORRECT> Il suffit de faire un retour si la demande de chargement provoque l'annulation.

Je tiens également à souligner que, les gens ne pas oublier de mettre un NSLog dans votre méthode didFailLoadWithError, cela peut éviter de perdre beaucoup de temps en repérant la question droite!

Voici donc la solution finale avec tout ce que je disais plus haut:

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