2010-08-05 51 views
4

我必須使用具有國際字符的GET訪問Web服務器(在我的情況下希伯來語,但可能是任何東西)。 所以我做出NSString得很好,但如何從NSString中準備NSURL並使國際字符不變?

[NSURL URLWithString:urlString]; // returns nil. 

我意識到我可能有國際字符轉換爲百分比碼。

Objective-c中是否有內置方法可以這樣做?

回答

10

是有,你需要-stringByAddingPercentEscapesUsingEncoding:方法:

[NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
0

這將確保NSURL *url因爲urlString"|"的不返回nil

NSString *urlString = [[NSString stringWithFormat:@"http://api.service.com/Service.svc?sort=name|ascending"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSURL *url = [NSURL URLWithString:urlString]; 
0

您可以直接使用NSURL沒有NSString

//.h file 

@interface NewsBrowser : UIViewController { 
    UIWebView *webView; 
    NSURL *NewsUrl; 
} 

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

@end 

//.m file 

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

(使用NewsUrl變量)只是通過從另一種觀點認爲一個NSURL這一觀點。

0
+ (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL 
{ 
    NSURL *url = [NSURL URLWithString:sURL]; 
    if(url == nil) 
     return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    else 
     return url; 
} 

調用這個函數而不是URLWithString:應確保(在需要的時候,而不是零)的有效NSURL總是返回