代码之家  ›  专栏  ›  技术社区  ›  jkally

如何从包含国际字符的NSRL字符串准备NSURL?

  •  4
  • jkally  · 技术社区  · 16 年前

    我必须使用 GET NSString 很好但是

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

    我意识到我可能要把国际字符转换成百分号。

    Objective-c中是否有一个内置方法来执行此操作?

    4 回复  |  直到 12 年前
        1
  •  10
  •   Vladimir    16 年前

    是的,你需要 -stringByAddingPercentEscapesUsingEncoding:

    [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
        2
  •  0
  •   gotnull mzelina    15 年前

    这将确保 NSURL *url 不返回 nil "|" 在 urlString

    NSString *urlString = [[NSString stringWithFormat:@"http://api.service.com/Service.svc?sort=name|ascending"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    NSURL *url = [NSURL URLWithString:urlString];
    
        3
  •  0
  •   jsetting32    12 年前

    你可以用 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 变量)。

        4
  •  0
  •   Fabio Napodano    10 年前
    + (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL
    {
        NSURL *url = [NSURL URLWithString:sURL];
        if(url == nil)
            return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        else
            return url;
    }
    

    调用此函数而不是URLWithString:应确保始终返回有效的NSURL(需要时不返回nil)

    推荐文章