Проверьте, есть ли у URL-адреса http://префикс
В моем приложении, когда пользователь добавляет объект, вы также можете добавить ссылку для этого объекта, а затем ссылку можно открыть в webView.
Я попытался сохранить ссылку без префикса http://, а затем открыть ее в webView, но не могу ее открыть!
Прежде чем WebView начнет загрузку, существует ли способ проверить, имеет ли URL-адрес сохраненный http://префикс? И если он не получил его, как я могу добавить префикс к URL?
Спасибо!
Ответы
Ответ 1
Вы можете использовать метод - (BOOL)hasPrefix:(NSString *)aString
на NSString, чтобы узнать, начинается ли NSString, содержащий ваш URL с префиксом http://, и если не добавить префикс.
NSString *myURLString = @"www.google.com";
NSURL *myURL;
if ([myURLString.lowercaseString hasPrefix:@"http://"]) {
myURL = [NSURL URLWithString:myURLString];
} else {
myURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@",myURLString]];
}
Я сейчас вдалеке от моего mac и не могу скомпилировать/протестировать этот код, но я считаю, что вышеприведенное должно работать.
Ответ 2
NSString * urlString = ...;
NSURL * url = [NSURL URLWithString:urlString];
if (![[url scheme] length])
{
url = [NSURL URLWithString:[@"http://" stringByAppendingString:urlString]];
}
Ответ 3
Я не уверен, есть ли способ проверить это, но вы проверяете его в коде.
попробуйте использовать
NSRange range = [urlString rangeOfString:@"http://"];
if (range.location != NSNotFound)
// Add http://
Ответ 4
Я написал расширение для String в Swift, чтобы увидеть, что строка url получила http или https
extension String{
func isValidForUrl()->Bool{
if(self.hasPrefix("http") || self.hasPrefix("https")){
return true
}
return false
}
}
if(urlString.isValidForUrl())
{
//Do the thing here.
}
Ответ 5
Если вы проверяете "http://", вам, вероятно, понадобится поиск без учета регистра:
// probably better to check for just http instead of http://
NSRange prefixRange =
[temp rangeOfString:@"http"
options:(NSAnchoredSearch | NSCaseInsensitiveSearch)];
if (prefixRange.location == NSNotFound)
Хотя я думаю, что проверка схемы URL - лучший ответ в зависимости от ваших обстоятельств, поскольку URL-адреса могут начинаться с http или https и других префиксов в зависимости от вашего использования.
Ответ 6
Сначала вы должны создать новую категорию для NSURL: Файл > Новый файл > Objective-C Категория. Вы можете вызвать категорию что-то по строкам HTTPURLWithString, сделать ее категорией NSURL, нажать следующую и добавить ее в свою цель. Затем в NSURL + HTTPURLFromString.m реализовано следующее сообщение (и объявите сообщение в вашем .h)
@implementation NSURL (HTTPURLFromString)
+(NSURL *)HTTPURLFromString:(NSString *)string
{
NSString *searchString = @"http";
NSRange prefixRange = [string rangeOfString:searchString options:(NSCaseInsensitiveSearch | NSAnchoredSearch)];
if (prefixRange.length == 4) {
return [NSURL URLWithString:string];
}
return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", string]];
}
@end
Чтобы открыть ссылку в WebView, просто
NSString *urlString = @"www.google.com";
NSURL *url = [NSURL HTTPURLFromString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView.mainFrame loadRequest:request];