2010-08-05 5 views
4

Мне нужно получить доступ к веб-серверу с помощью GET с международными символами (на иврите в моем случае, но может быть что угодно). Так что я сделать NSString только штраф, ноКак подготовить NSURL от международных символов NSString?

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

Я понимаю, что, возможно, придется конвертировать международные символы процентов кодов.

Есть ли встроенный метод в Objective-c для этого?

ответ

10

Да есть, вам нужно -stringByAddingPercentEscapesUsingEncoding: метод:

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

Это обеспечит NSURL *url не возвращает nil из-за "|" в urlString.

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]]; 

Просто пройти NSURL с другой точкой зрения (с помощью NewsUrl переменной) к этой точке зрения.

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

вызова этой функции вместо URLWithString: следует обеспечить, чтобы действительный NSURL всегда возвращается (вместо нуля при необходимости)