[iphone] URLWithString : nil 반환

매우 쉬울 수도 있지만 URLWithString:여기에서 nil을 반환 하는 이유를 알 수없는 것 같습니다 .

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false&key=", webName];
NSURL* url = [NSURL URLWithString:stringURL];



답변

하드 코딩 된 URL에서도 비 ASCII 문자를 이스케이프해야합니다.

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

전체 문자열의 이스케이프에 의해 처리되므로 localisationName의 이스케이프를 제거 할 수 있습니다.


답변

파일 관리자에 저장된 파일을 다룰 때이 기능을 사용하십시오.

NSURL *_url = [NSURL fileURLWithPath:path];


답변

을 사용해야한다고 생각합니다 -[NSString stringByAddingPercentEscapesUsingEncoding:]. Apple 문서를 참조하십시오 .

또 다른 의견은 이전 타이머로서 소스 파일에 ASCII가 아닌 문자를 넣는 것이 약간 불편하다는 것입니다. 즉,이 Apple 문서 는 10.4부터 UTF-16 문자열이 @"...". 어떻게 든 GCC는 Latin-1의 소스 파일을 바이너리에서 UTF-16으로 올바르게 변환하는 것처럼 보이지만 소스 코드 내에서만 7 비트 ASCII 문자를 사용하고 NSLocalizedString.


답변

나는 당신의 악센트가있는 캐릭터가 물건을 던지고 있다고 생각합니다. -stringByAddingPercentEscapesUsingEncoding :에 의해 처리되지 않습니다.


답변

NSURL URLWithString : @ “”는 URL이 RFC 2396을 따르지 않고 이스케이프되어야하는 경우 nil을 반환합니다.

링크에서 rfc2396 을 읽으면 많은 세부 정보를 얻을 수 있습니다.

문제가되는 문자가 어디에 있는지 확인하기 위해 찾은 훌륭한 사이트, URL에 대한 경로 옵션을 선택하십시오.

http://www.websitedev.de/temp/rfc2396-check.html.gz


답변

URLWithString : 호출은 전달 된 문자열이 잘못된 경우 nil을 반환합니다. NSURL은 잘못된 URL에 대해 nil을 반환하므로 NSURL 생성 방법에 전달되는 내용을 정확히 확인하기 위해 문자열을 NSLog하고 중단 점을 설정합니다. URLWithString이 하드 코딩 된 값으로 작동하면 전달하는 모든 것이 잘못되었다는 추가 증거입니다. 보다


답변

NSString없이 직접 NSURL을 사용할 수 있습니다.

//.h 파일

@interface NewsBrowser : UIViewController {

    UIWebView *webView;
    NSURL *NewsUrl;

}

@property (nonatomic, retain) IBOutlet UIWebView *webView;

@property(nonatomic,assign)NSURL *NewsUrl;

@end

//.m 파일

[webView loadRequest:[NSURLRequest requestWithURL:NewsUrl]];

그리고 다른 뷰 (NewsUrl 변수 사용)에서이 뷰로 URL을 전달합니다.

시도 해봐.