2009-06-21 14 views
50

Próbuję zaktualizować moją aplikację na iPhone'a do pracy z systemem 3.0. Mam UIWebView, który pokazuje stronę dobrze. Ale kiedy klikam łącze, które wywołuje mój delegat dla didFailLoadWithError, a błąd jest nie można wykonać operacji. (Błąd NSURLErrorDomain -999.) Potwierdziłem, że to nadal działa z OS 2.2.1, więc jest coś zmienione w wersji 3.0.Jak naprawić błąd NSURLErrorDomain -999 w systemie iPhone 3.0 OS

Wszelkie pomysły?

+0

szczegóły jak na której stronie są w UIWebView (jeśli jest to publiczny) i jak skonfigurować ten widok i delegat w kodzie mogą być użyteczne. – dlamblin

+0

Jestem teraz w drodze i otrzymam więcej szczegółowych informacji, gdy wrócę. To jest publiczna strona internetowa. Podczas dalszego kopania wygląda na to, że może być związane ze stroną, która nie jest w pełni załadowana przed otrzymaniem kolejnego żądania. Nie miałem jeszcze okazji tego przetestować. Jeśli to okaże się problemem, zaktualizuję. –

+0

Myślę, że należy ponownie sprawdzić, która jest poprawna odpowiedź. – hfossli

Odpowiedz

115

Udało mi się znaleźć odpowiedź here.

Wątek ten zawierał opis tego błędu: This error may occur if an another request is made before the previous request of WebView is completed...

ja obejść to poprzez ignorowanie tego błędu i pozwalając WebView nadal załadować.

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

Lepiej używać stałej NSURLErrorCancelled zamiast literalnej wartości -999. – hasseg

+0

to zmieniło mnie tak wiele wyszukiwania, dzięki! – favo

+3

Ten błąd może być również zapachem kodu. Pozbyłem się tego nie przez zignorowanie go, ale przez przeniesienie wywołania metody wyzwalania obciążenia z 'viewDidAppear' (które może wywołać wiele razy podczas ładowania widoku WWW) do' viewDidLoad'. – clozach

28

NSURLErrorCancelled (-999)

„zwróciło gdy asynchroniczny obciążenie zostanie anulowane. Delegat ramy Kit Web otrzyma ten błąd, gdy wykonuje anulować operację na zasobie załadunku. Należy pamiętać, że NSURLConnection lub Delegat NSURLDownload nie otrzyma tego błędu, jeśli pobieranie zostanie anulowane. "

Dla mojej sytuacji (i prawdopodobnie twój) to może być ignorowane:

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

dwóch powyższych odpowiedzi był poprawny> Wystarczy zrobić zwrot, jeżeli żądanie ładowania powoduje anulowanie.

Również chcę podkreślić, że ludzie nie zapomnij umieścić NSLog wewnątrz didFailLoadWithError metody, może to zapobiec utracie dużo czasu przez plamienia kwestię tuż!

Więc tutaj jest ostateczne rozwiązanie ze wszystkimi wspomniałem powyżej:

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