Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从包含国际字符的NSString中准备NSURL?_Iphone_Nsstring_Nsurl - Fatal编程技术网

Iphone 如何从包含国际字符的NSString中准备NSURL?

Iphone 如何从包含国际字符的NSString中准备NSURL?,iphone,nsstring,nsurl,Iphone,Nsstring,Nsurl,我必须使用带有国际字符的GET(希伯来语,但可以是任何东西)访问web服务器。 所以我做了一个NSString很好,但是 [NSURL URLWithString:urlString]; // returns nil. 我意识到我可能需要将国际字符转换成百分比代码 Objective-c中是否有内置方法可以执行此操作?是的,您需要-stringByAddingPercentEscapesUsingEncoding:方法: [NSURL URLWithString:[string stringB

我必须使用带有国际字符的
GET
(希伯来语,但可以是任何东西)访问web服务器。 所以我做了一个
NSString
很好,但是

[NSURL URLWithString:urlString]; // returns nil.
我意识到我可能需要将国际字符转换成百分比代码


Objective-c中是否有内置方法可以执行此操作?

是的,您需要
-stringByAddingPercentEscapesUsingEncoding:
方法:

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

这将确保
NSURL*url
不会因为
urlString
中的
“|”
而返回
nil

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

NSURL *url = [NSURL URLWithString:urlString];

您可以直接使用
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
变量)

+ (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL
{
    NSURL *url = [NSURL URLWithString:sURL];
    if(url == nil)
        return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    else
        return url;
}
调用此函数而不是URLWithString:应确保始终返回有效的NSURL(需要时不是nil)