NSData 未在 UIWebView lodadata 方法中正确加载

Posted

技术标签:

【中文标题】NSData 未在 UIWebView lodadata 方法中正确加载【英文标题】:NSData not loaded properly in UIWebView lodadata method 【发布时间】:2014-05-25 07:37:33 【问题描述】:

我希望 UIWebView 离线工作。当我第一次访问 url 时,我已经完成了以下代码以 webViewDidFinishLoad 方法将数据保存在文档目录中。

NSCachedURLResponse* response = [[NSURLCache sharedURLCache]                                     cachedResponseForRequest:[webview request]];
NSData * data = [response data];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSString *filePath = [NSString stringWithFormat:@“%@temp”, basePath];
if (response)

    BOOL isSaveFile = [NSKeyedArchiver archiveRootObject:data toFile:filePath];

当我第二次打开webview 时,我将检查该文件是否存在。我得到文件存在我已经完成以下代码从本地打开文件。

NSData * sData = (NSData *)[NSData dataWithContentsOfFile:filePath];
if (sData.length)

[webview loadData: sData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

上面的代码不能正常工作,我得到下面的输出。

请指导我。我做错了什么??

【问题讨论】:

你确定数据是“text/html”吗? @sage444 未修复,但大多数时候我得到 .pdf 文件或有时是网站 url。 【参考方案1】:

你应该设置正确的MIMEType,因为UIWebView不知道如何渲染原始数据。

NSCachedURLResponse* response = [[NSURLCache sharedURLCache] cachedResponseForRequest:[webview request]];
NSString *MIMEType = response.response.MIMEType;
NSData * data = [response data];

然后加载

[webview loadData: sData MIMEType:MIMEType textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

【讨论】:

MIMEType 是我的错误。它是 @"application/pdf" insted of @"text/html" 谢谢

以上是关于NSData 未在 UIWebView lodadata 方法中正确加载的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 内存泄漏 - NSData dataWithContentsOfUrl & UIWebView

UIWebView 未在 ios 中加载

PDF 未在 UIWebView 中正确显示

链接未在 uiwebview 中打开

url 未在 UIWebView 中加载

UIWebView 未在 iPhone 中显示具有正确字体大小的 .doc 文件