使用 UIWebView 加载静态资源时出现随机错误

Posted

技术标签:

【中文标题】使用 UIWebView 加载静态资源时出现随机错误【英文标题】:Random error on loading a static resource with a UIWebView 【发布时间】:2014-08-02 14:19:56 【问题描述】:

我正在使用UIWebView 加载我的应用程序包中附带的静态资源。有时,我不清楚问题可能是什么,我在委托方法中收到以下错误- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1001

资源是通过NSURLRequest 加载的,我在其中设置了 10 秒的超时间隔,但没有遵循该间隔。事实上,在调试控制台中,我可以看到错误委托在大约 2 秒后被调用。

NSURL *htmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"root" ofType:@"html"] isDirectory:NO];
NSURLRequest* htmlRequest = [NSURLRequest requestWithURL:htmlFile cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0];

[webView loadRequest:htmlRequest];

事实是我不能总是复制我遇到的问题。有什么建议么?

附:我正在使用从 4.3 运行的应用程序。 ios 7 也存在问题。

【问题讨论】:

【参考方案1】:

根据苹果CFNetwork Error Codes Reference这段代码是超时错误:

kCFURLErrorTimedOut  = -1001

超时并不总是很容易重现,您很可能应该在初始化 NSURLRequest 时延长超时值。

根据相同的文档,您可以查询对象以获取更多信息。

例如:

if (CFEqual(CFErrorGetDomain(err), kCFErrorDomainCFNetwork) && CFErrorGetCode(err) == kCFHostErrorUnknown) 

    CFDictionaryRef userInfo = CFErrorCopyUserInfo(err);

    CFNumberRef number = (CFNumberRef) CFDictionaryGetValue(userInfo, kCFGetAddrInfoFailureKey);

    ...

    CFRelease(userInfo);

【讨论】:

【参考方案2】:

我想您正在寻找的资源不可用。确保路径正确(ios 区分大小写),如果您从 Internet 下载某些内容,请确保下载已完成并且文件已从临时文件夹复制到最终目的地。

【讨论】:

感谢您的回复。该资源可用,因为我可以在 Web 视图中看到它。 有时(我无法复制它)它无法正确加载。更新了一些代码。

以上是关于使用 UIWebView 加载静态资源时出现随机错误的主要内容,如果未能解决你的问题,请参考以下文章

在 UIWebView 中使用 tiff 和 gif 格式图像时出现问题

在使用mybatis的selectFromExample时出现Invalid bound statement (not found)错误

从 Qt 资源文件加载 ico 时出现问题

ionic v3 build IOS 上传到应用商店时出现“UIWebView”错误

在 Mac 上使用 OpenAL 播放音频时出现随机噪音

打印 UIWebView 时出现意外的分页符