2008-10-10 4 views
4

나는 코코아에서 더 능숙해질 수 있도록 홈 브루 웹 브라우저를 만들려고 노력 중이다. 사용자가 유효한 URL을 입력했는지 여부를 확인하는 좋은 방법이 필요합니다. 일부 정규 표현식을 시도했지만 NSString은 흥미로운 몇 가지 단점을 가지고 있으며 사용 된 대부분의 정규 표현식이 역 인용 부호를 사용하는 것을 좋아하지 않습니다.Cocoa 응용 프로그램에서 사용자 입력 URL의 유효성을 검사하는 가장 좋은 방법은 무엇입니까?

답변

5

+ (id)URLWithString:(NSString *)URLString 메서드는 NSURL으로 시작할 수 있으며, 문자열이 잘못된 경우 nil을 반환합니다. 당신이 더 검증이 필요하면

, 당신은 당신이 당신이 맞는 볼 어떤 방법으로 평가할 수있는 URL의 특정 구성 요소를 제공하는 등의 방법을 baseURL, host, parameterString, path를 사용할 수 있습니다.

+0

감사합니다. – mclaughlinj

+5

이것으로 혼란스러운 분 : NSURL * myURL = [NSURL URLWithString : @ "test"]; "test"가 유효한 URL이기 때문에 if (myURL) {}가 충분하지 않습니다. if (myURL && myURL.scheme && myURL.host) {} –

+0

if (myURL && myURL.scheme && myURL.host) {}이 방법은 사용할 수 없습니다. "xxxx : // xxxx : //www.googl.com"과 같은 ULR에도 유효합니다. –

4

나는 괜찮은 것처럼 보이지만 NSURL 생성 방법으로 거부 된 일부 URL을 입력하는 것이 가능하다는 것을 발견했습니다. 문자열을 먼저 이스케이프 처리하여 좋은 형식인지 확인하는 방법이 있습니다. 다음은 그 고기입니다.

 
NSString *escapedURLString = 
    NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL, 
     (CFStringRef)URLString, 
     (CFStringRef)@"%+#", // Characters to leave unescaped 
     NULL, 
     kCFStringEncodingUTF8)); 
관련 문제