nsurl не загружает сайты, если http или https не включены

#objective-c #nsurl #nsurlrequest

#objective-c #nsurl #nsurlrequest

Вопрос:

У меня есть текстовое поле, в которое я могу ввести URL-адрес. Проблема в том, что если я просто введу ‘cnn.com ‘ или любой сайт без ‘http://’ впереди, страница не загружается. Есть ли способ это исправить?

Я просмотрел документацию Apple, но не смог найти нужную мне справку.

Мой код:

 NSString *zzz = URLbox.text;

NSURL *url = [NSURL URLWithString:zzz];
[webBrowser loadRequest:[NSURLRequest requestWithURL:url]];
  

Ответ №1:

Проверьте, начинается ли входной URL (URLbox.text) с http:// или https:// , и если это не так, добавьте к нему префикс http:// .

Комментарии:

1. Спасибо, ребята! Заработало: NSString *myURLString = URLbox.text; NSURL *myURL; if ([myURLString hasPrefix:@"http://"]) { myURL = [NSURL URLWithString:myURLString]; } else { NSString *rer = [NSString stringWithFormat:@"http://%@", myURLString]; myURL = [NSURL URLWithString:rer]; rer = URLbox.text;; NSLog(@"updated textbox"); }

Ответ №2:

URL-адрес включает схему, если только она не является относительной частью документа. cnn.com это случайное сокращение от http://cnn.com or http://www.cnn.com . Браузеры обычно http:// автоматически добавляют к тому, что вы вводите в строке местоположения перед отправкой запроса.

Вы должны проверить, начинается ли строка пользователя со схемы (не обязательно просто http:// или https:// , но этого может быть достаточно в вашем случае использования) и добавить ее по умолчанию, если она отсутствует.