2015-08-07 1 views
6

Я использую веб-представление в своем приложении, получая URL-адрес из текстового поля. Он работает, если строка начинается с «http: //». Я пытаюсь изменить код, чтобы он мог также обрабатывать ситуации, когда пользователи не вводят «http: //» или «https: //»Добавить http: // в NSURL, если его нет

Как проверить, не содержит ли URL-адрес «http ://" в этом ? Как изменить URL-адрес, чтобы добавить в него «http: //»?

NSString *URLString = textField.text; 
NSURL *URL = [NSURL URLWithString:URLString]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
[self.webView loadRequest:request]; 
+0

Related: [Изменить схему давал NSURL в] (HTTP: // StackOverflow. com/q/14393016) –

ответ

9
NSString *urlString = @"google.com"; 
NSURL *webpageUrl; 

if ([urlString hasPrefix:@"http://"] || [urlString hasPrefix:@"https://"]) { 
    webpageUrl = [NSURL URLWithString:urlString]; 
} else { 
    webpageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", urlString]]; 
} 

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:webpageUrl]; 
[self.myWebView loadRequest:urlRequest]; 
+0

Нет причин для '= [NSURL new];'. Это потерянная память. – rmaddy

0

Попробуйте это.

NSString *URLString = textField.text; 
if ([URLString rangeOfString:@"http://"].location == NSNotFound && [URLString rangeOfString:@"https://"].location == NSNotFound) 
    { 
     URLString=[NSString stringWithFormat:@"http://%@",textField.text]; 
    }   
    NSURL *URL = [NSURL URLWithString:URLString]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
[self.webView loadRequest:request]; 
+2

Я бы рекомендовал использовать [NSString hasPrefix:] – antonio081014

+1

Да, потому что если http: // находится где-то еще в строке, а не впереди, он не будет загружаться. :) – emotality

0

Позвольте мне обновить ответ на Swift 4 и WKWebKit

 var urlString = "www.apple.com" 

    if urlString.hasPrefix("https://") || urlString.hasPrefix("http://"){ 
     let myURL = URL(string: urlString) 
     let myRequest = URLRequest(url: myURL!) 
     webView.load(myRequest) 
    }else { 
     let correctedURL = "http://\(urlString)" 
     let myURL = URL(string: correctedURL) 
     let myRequest = URLRequest(url: myURL!) 
     webView.load(myRequest) 
    } 
0

Попробуйте:

NSString *URL = @"apple.com" ; 
    NSURL *newURL ; 

    if ([URL hasPrefix:@"http://"] || [URL hasPrefix:@"https://"]) { 
     newURL = [NSURL URLWithString:URL] ; 
    } 
    else{ 
     newURL = [NSURL URLWithString:[NSString 
     stringWithFormat:@"http://%@",URL]] ; 
    } 
    NSLog(@"New URL : %@",newURL) ;