2010-08-05 10 views
4

Je dois accéder à un serveur web en utilisant un GET avec des caractères internationaux (hébreu dans mon cas mais pourrait être n'importe quoi). Alors je fais une NSString très bien, maisComment préparer un NSURL à partir d'un NSString en continuant des caractères internationaux?

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

je me rends compte que je dois probablement convertir les caractères internationaux aux codes pour cent.

Existe-t-il une méthode intégrée dans Objective-c pour le faire?

Répondre

10

Oui il est, vous avez besoin méthode -stringByAddingPercentEscapesUsingEncoding::

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

Cela permettrait d'assurer NSURL *url ne retourne pas nil à cause de la "|" dans le urlString.

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

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

Vous pouvez utiliser directement sans NSURLNSString:

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

Il suffit de passer un NSURL d'une autre vue (en utilisant la variable NewsUrl) à ce point de vue.

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

appeler cette fonction au lieu de URLWithString: doit veiller à ce qu'un NSURL valide est toujours retourné (au lieu de zéro en cas de besoin)

Questions connexes