2016-06-18 2 views
2

je le code suivantDetect quand WKWebview ne peut pas traiter une demande

NSURL *nsurl = [NSURL urlWithString:@"http://url.that.does.not.exist.com"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsurl]; 
WKWebViewConfiguration *config = [WKWebViewConfiguration new]; 
WKWebView *wv = [[WKWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds] configuration:config]; 
wv.navigationDelegate = self; 

Et le délégué:

- (void)webView:(WKWebView *)webView 
    decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse 
         decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler { 
... 
} 

fonctionne très bien et je peux attraper des erreurs lorsque l'n'a pas pu être chargé (404, etc.). Mais comment puis-je attraper l'erreur quand le nsurl était quelque chose que WKWebView ne pouvait même pas gérer?

Par exemple:

NSURL *nsurl = [NSURL urlWithString:@"nacho"]; 

conduira à une page blanche sans méthode déléguée appelée. Comment puis-je gérer détecter cette erreur? (J'ai vérifié à ce iPhone SDK: Check validity of URLs with NSURL not working? mais je me demande s'il y a quelque chose de mieux que regex?)

Répondre

1

Vous pouvez essayer de voir si l'URL peut être demandée comme ceci:

NSURL *nsurl = [NSURL urlWithString:@"nacho"]; 

if([NSURLConnection canHandleRequest:[NSURLRequest requestWithURL: nsurl]]){ 
    NSLog(@"URL can be loaded"); 
}else{ 
    NSLog(@"URL cannot be loaded"); 
} 
+0

Cela fonctionne !. C'est dans NSURLConnection.h il y a un gros "/ *** DEPRECATED: La classe NSURLConnection ne devrait plus être utilisée, NSURLSession est le remplaçant de NSURLConnection *** /" Je me demande s'il y a une meilleure approche (non dépréciée). .. – nacho4d

+0

selon apple https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/index.html#//apple_ref/occ/cl/NSURLConnection le ** NSURLConnection * * n'est pas totalement déprécié. il y a encore des méthodes non dépréciées – Karim