2016-06-18 103 views
2

我有以下代碼檢測時WKWebview無法處理請求

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; 

和委託:

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

工作正常,我可以找出錯誤時無法加載(404等)。但是,如果nsurl是WKWebView無法處理的東西,我該如何捕獲錯誤?

例如:

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

會導致沒有委託方法空白頁被調用。我如何處理檢測這個錯誤? (我在這個iPhone SDK: Check validity of URLs with NSURL not working?檢查,但我不知道是否有什麼事情比正則表達式更好嗎?)

回答

1

你可以試試,看看網址可以要求這樣的:

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

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

這一工程!它在NSURLConnection.h中有一個很大的「/ *** DEPRECATED:不應再使用NSURLConnection類NSURLSession是NSURLConnection的替代品*** /」我想知道是否有更好的(不推薦使用)方法。 .. – nacho4d

+0

根據Apple的https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/index.html#//apple_ref/occ/cl/NSURLConnection ** NSURLConnection * *並非完全棄權。仍然有一個非DEPRECATED方法 – Karim