Проверьте, действителен ли URL-адрес, чтобы я мог передать его NSURL?
Я хочу проверить, является ли NSString
допустимым URL-адресом, поэтому я могу разобрать его на переменную NSURL
... есть ли простой способ сделать это?:)
CRASH
По какой-то причине приложение падает при проверке.....
NSURL *shortURL = [[NSURL alloc] initWithString:data];
if(shortURL == nil)
{
NSLog(@"INVALID");
}
else {
NSLog(@"COOOL");
}
Консоль дает мне эту ошибку.....
* Завершение приложения из-за неотображенного исключения 'NSInvalidArgumentException', причина: '* - [NSURL initWithString: relativeToURL:]: параметр nil string' 2010-03-01 19: 24: 14.797 Snippety [8289: 5e3b] Стек: ( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485, 2454790162 )
Ответы
Ответ 1
Изменить: ниже ответ неверен. (Apple docs: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html)
NSURL
URLWithString
возвращает nil
, если указанный URL недействителен. Таким образом, вы можете просто проверить возвращаемое значение, чтобы определить, действительно ли URL.
Пример:
NSURL *url = [NSURL URLWithString:urlString];
if(url){ NSLog("valid"); }
Ответ 2
Я использую метод ниже, чтобы проверить, является ли NSString testString допустимым URL:
NSURL *testURL = [NSURL URLWithString:testString];
if (testURL && [testURL scheme] && [testURL host])
{
NSLog(@"valid");
}
{
NSLog(@"not valid");
}
схема проверяет префикс URL-адреса, например. http://, https://или ftp://
хост проверяет домен URL-адреса, например. google.com или images.google.com
Примечание. Это все равно даст вам некоторые ложные срабатывания, например. при проверке http://google,com (обратите внимание на запятую) вернет значение, но это определенно более точно, чем просто проверка того, является ли NSURL не нулем ([NSURL urlWithString:@"banana"]
is не ноль).
Ответ 3
Это в основном то, что делает метод +[NSURLConnection canHandleRequest:]
. Этот метод запускает предварительную проверку по NSURLRequest
, чтобы убедиться, что запрос разрешим. Чтобы быстро проверить определенный URL, вы можете сделать это:
BOOL isValidURL = [NSURLConnection canHandleRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://example.com"]];