ios – NSURL:URLByAppendingPathComponent:转换?进入?,但随后UIWebView撤消了转换导致的负载故障

我正在加载一个本地html页面并在shouldStartLoadWithRequest中:使用以下url:

... /Library/Application%20Support/CDS/%3Fpid=27ce1ef8-c75e-403b-aea1-db1ae31e05cc/...

在该页面中,如果用户点击链接转到外部网站,则他们点击我的代码处理它的后退按钮:

if ([self.webView canGoBack])
    [self.webView goBack];

但是,当调用[self.webView goBack]后,再次调用shouldStartLoadWithRequest:时,传递给shouldStartLoadWithRequest的URL已更改为:

`... /Library/Application%20Support/CDS/?pid=27ce1ef8-c75e-403b-aea1-db1ae31e05cc/..`.

即OS已经改变了“?”在“?”的URL内.

我从shouldStartLoadWithRequest返回YES:但由于“?”转向 ”?”导致使用WebKitErrorDomain 102调用didFailLoadWithError:并且页面无法加载.

文件实际上有?在它的名字,但它是转换成的iOS系统调用?在构建NSURL对象的过程中,该对象传递给UIWebView:loadRequest:如下所示

NSURL *fullURL = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory                                                                                 inDomain:NSUserDomainMask
                                                                          appropriateForURL:nil 
                                                                                           create: YES
                                                                                               error:&err];

fullURL = [fullURL URLByAppendingPathComponent:folderLocation isDirectory:YES];
fullRUL = [fullURL URLByAppendingPathComponent: pageToLoad isDirectory:NO];
NSURLRequest *requestObj = [NSURLRequest requestWithURL: fullURL];      
[self.webView loadRequest:requestObj];

folderLocation是一个包含?的NSString,对URLByAppendingPathComponent的调用会自动将其转换为?,而不进行该转换,页面加载失败.

有没有人见过这个?

最佳答案 我没有使用文件网址,但我遇到了同样的问题.

看起来这是处理它的最佳方式.

NSString *newURLString = [[origurl absoluteString] stringByAppendingPathComponent:appendedString];
NSURL *url = [NSURL URLWithString:newURLString];
点赞