使用 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)错误