Проверьте, если действительный URL, чтобы я мог передать его NSURL? - PullRequest
10 голосов
/ 01 марта 2010

Я хочу проверить, является ли NSString допустимым URL-адресом, чтобы я мог проанализировать его в переменной NSURL ... Есть ли простой способ сделать это? :)

CRASH По какой-то причине приложение вылетает при проверке .....

NSURL *shortURL = [[NSURL alloc] initWithString:data];
if(shortURL == nil)
{
    NSLog(@"INVALID");
}
else {
    NSLog(@"COOOL");
}

Консоль выдаёт мне эту ошибку .....

* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [NSURL initWithString :lativeToURL:]: параметр строки nil» 2010-03-01 19: 24: 14.797 Сниппет [8289: 5e3b] Стек: ( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485, 2454790162 )

Ответы [ 2 ]

12 голосов
/ 01 марта 2010

Редактировать: приведенный ниже ответ не соответствует действительности.(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"); }
8 голосов
/ 08 августа 2015

Я использую метод ниже, чтобы проверить, является ли NSString testString действительным URL:

NSURL *testURL = [NSURL URLWithString:testString];
if (testURL && [testURL scheme] && [testURL host])
{
    NSLog(@"valid");
}
{
    NSLog(@"not valid");
}

схема проверяет префикс URL, например, http://, https: // или ftp: //

host проверяет домен URL, например, google.com или images.google.com

Примечание: это все равно даст вам ложные срабатывания, например, при проверке http://google,com (обратите внимание на запятую) вернется valid , но это определенно точнее, чем просто проверка, является ли NSURL не nil ([NSURL urlWithString:@"banana"] не nil).

...