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

时间:2014-08-02 14:19:56

标签: ios objective-c ios7 uiwebview uiwebviewdelegate

我使用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];

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

P.S。我正在使用从4.3运行的应用程序。问题也出在iOS 7上。

2 个答案:

答案 0 :(得分:1)

根据apple 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);
}

答案 1 :(得分:0)

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