2014-11-29 1 views
0

В основном я пытаюсь найти объекты NSSet, содержащиеся в URL-адресе для моего веб-просмотра.Используйте NSScanner или NSRange для URL-адреса, чтобы найти объекты NSSet

Как использовать NSScanner или NSRange для этого?

Ниже приведено то, с чем я работаю.

//External file links 
    NSURL* externalURL = [request URL]; 
    NSString *externalFileExtension = [[request URL] pathExtension]; 


    //External file extensions 
    NSLog(@"fileExtension is: %@", externalFileExtension); 
    NSSet *supportedFileExtensions = [NSSet setWithObjects:@"mpeg", @"mpg", @"m1s", @"mpa", @"mp2", @"m2a", @"mp2v", @"mv2", @"m2s", @"avi", @"mov", @"qt", @"asf", @"asx", @"wmv", @"wma", @"wmx", @"rm", @"ra", @"ram", @"rmvb", @"mp4", @"3gp", @"3gpp", @"ogm", @"mkv", @"flv", @"mv4", @"srt", @"swf", @"vob", @"aif", @"iff", @"m3u", @"m4a", @"mid", @"mp3", @"mpa", @"wav", @"aac", @"7z", @"cbr", @"deb", @"gz", @"pkg", @"rar", @"rpm", @"sitx", @"tar.gz", @"zip", @"zipx", @"ipsw", @"bin", @"cue", @"dmg", @"iso", @"mdf", @"toast", @"vcd", @"torrent", @"nes", @"rom", @"doc", @"docs", @"msg", @"odt", @"rtf", @"txt", @"wpd", @"wps", nil]; 

    if ([supportedFileExtensions containsObject:externalFileExtension]) { 
     //my actions 
} 

Из-типа ссылок, некоторые сайты не точно использовать расширения файлов, некоторые используют тип расширения в ссылке, т.е. «почтовый = blahblah» или «blahblahzipblah»

мне нужно искать ссылка щелкнула, чтобы найти часть supportedFileExtensions

Спасибо расширенного

UPDATE:.. Благодаря rmaddy для получения меня в правильном направлении для моего первоначального вопроса, она решает, но я имею.. проблемы остроумия h использование на некоторых других сайтах.

У меня есть веб-просмотр, в котором у меня есть несколько ссылок на разные сайты, такие как Media Fire, Copy, Box и т. Д. Даже прямая ссылка для скачивания. Например, медиа-пожарная ссылка запускает загрузку, даже не заходя на сайт, почти как ее просто загружая текст. Прямая загрузка вообще не запускает мой загрузчик.

Используя принятый ответ, какой будет самый чистый способ их отличить?

+0

Ваша цель, чтобы увидеть, если любой из ваших расширений в любой часть URL-адреса? – rmaddy

+0

Точно то, что я пытаюсь сделать. – ChrisOSX

ответ

1

Следующая должно быть то, что вы хотите:

//External file links 
NSURL* externalURL = [request URL]; 
NSString *urlString = [externalURL absoluteString]; 

NSSet *supportedFileExtensions = [NSSet setWithObjects:@"mpeg", @"mpg", @"m1s", @"mpa", @"mp2", @"m2a", @"mp2v", @"mv2", @"m2s", @"avi", @"mov", @"qt", @"asf", @"asx", @"wmv", @"wma", @"wmx", @"rm", @"ra", @"ram", @"rmvb", @"mp4", @"3gp", @"3gpp", @"ogm", @"mkv", @"flv", @"mv4", @"srt", @"swf", @"vob", @"aif", @"iff", @"m3u", @"m4a", @"mid", @"mp3", @"mpa", @"wav", @"aac", @"7z", @"cbr", @"deb", @"gz", @"pkg", @"rar", @"rpm", @"sitx", @"tar.gz", @"zip", @"zipx", @"ipsw", @"bin", @"cue", @"dmg", @"iso", @"mdf", @"toast", @"vcd", @"torrent", @"nes", @"rom", @"doc", @"docs", @"msg", @"odt", @"rtf", @"txt", @"wpd", @"wps", nil]; 

for (NSString *extension in supportedFileExtensions) { 
    if ([urlString rangeOfString:extension].location != NSNotFound) { 
     // Found extension somewhere in the URL - process it as needed 
     break; // stop looking for more 
    } 
} 
+0

Работа по большей части, только пара вопросов. У меня есть несколько ссылок на разные сайты, такие как Media Fire, Copy, Box и т. Д. Даже прямая ссылка для скачивания. Например, медиа-пожарная ссылка запускает загрузку, даже не заходя на сайт, почти как ее просто загружая текст. Прямая загрузка вообще не запускает мой загрузчик. – ChrisOSX

+0

Это, похоже, не имеет ничего общего с вашим оригинальным вопросом. Если этот ответ решает ваш первоначальный вопрос, вы должны принять и/или обновить ответ. Если у вас есть дополнительная проблема, отправьте новый вопрос с соответствующими сведениями. – rmaddy

+0

Вопрос обновлен. – ChrisOSX

0

Возможно, что-то вроде этого без с помощью NSScanner или NSRange:

BOOL result = NO; 
for (NSString *extension in supportedFileExtensions) { 
    if ([externalFileExtension isEqualToString:extension]) { 
     result = YES; 
     break; 
    } 
} 
+0

Но проблема в том, что: NSString * externalFileExtension = [[URL запроса] pathExtension]; по-прежнему ищет расширение, когда «расширение» может быть посередине ссылки. – ChrisOSX

+0

Код в этом ответе - длинный путь простого вызова '[supportedFileExtensions containsObject: externalFileExtension], который OP уже делает. – rmaddy

+0

Ах. Я не понял, что containsObject будет вызывать isEqual для каждого элемента. Я считал, что он просто сравнивает указатели – kylejm