2014-11-29 3 views
0

기본적으로 저는 webview에 대한 URL에 포함 된 NSSet 객체를 찾으려고합니다.NSSet 객체를 찾기위한 url에 NSScanner 또는 NSRange를 사용하십시오.

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합니다 그러나 나는 데. 이슈들 다른 사이트에서의 사용.

나는 Media Fire, Copy, Box 등과 같은 여러 사이트에 대한 몇 개의 링크가있는 webview를 가지고 있습니다. 직접 다운로드 링크조차도 있습니다. 예를 들어 미디어 파이어 링크는 텍스트 다운로드와 거의 같은 사이트 방문없이 다운로드를 시작합니다. 직접 다운로드는 내 다운로더를 전혀 터뜨리지도 않을 것입니다.

허용되는 대답을 사용하면 가장 명확한 구분 방법은 무엇입니까?

+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 = [[request URL] pathExtension]; "확장 기능"이 링크의 중간에있을 때 확장 기능을 계속 검색합니다. – ChrisOSX

+0

이 답변의 코드는 OP가 이미 수행중인'[supportedFileExtensions containsObject : externalFileExtension]'을 호출하는 긴 방법입니다. – rmaddy

+0

아. containsObject가 각 항목에 대해 isEqual을 호출한다는 것을 알지 못했습니다. 나는 포인터를 비교했을 뿐이라고 믿었습니다. – kylejm