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

时间:2014-04-11 08:43:48

标签: ios nsdata nsurl loaddata uiweb

我希望UIWebView离线工作。当我第一次访问网址时,我已完成以下代码,以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:@""]];
}

以上代码无法正常工作,我得到以下输出。

enter image description here

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

1 个答案:

答案 0 :(得分:2)

您应该设置正确的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:@""]];