为不保存到文档目录的URL编码NSData

时间:2013-04-10 14:32:54

标签: html ios uiwebview nsdocumentdirectory

我正在尝试在iPhone的文档目录中本地保存html页面,以便在手机处于脱机状态时加载页面

我的问题是当我直接调用我的NSData对象写入文件时,所有原始数据都保存在文档目录的文件中。

但是只要我使用编码将NSData转换为NSString,它就会停止在文档目录中写入文件。但是当我打印内容对象时,它会记录正确的数据。我只想将其保存到文件中。

NSURL *url = [NSURL URLWithString:@"http://anyurl"];
NSData *urlHtmlData = [NSData dataWithContentsOfURL:url];    

NSString *myString = [[NSString alloc]initWithData:urlHtmlData encoding:NSUTF8StringEncoding];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"index.html"];
[myString writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

什么可能导致内容停止写入我的文件?

或者,如果有人有更好的解决方案来查看离线网页而不是将其保存到文档目录中?

由于

1 个答案:

答案 0 :(得分:1)

这可能有些问题。一:您不使用stringWithFormat:附加路径组件。 NSString有一个方法:

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"index.html"];

二:NSStringEncodingConversionAllowLossy是未为writeToFile:定义的枚举的一部分,因此通过使用它,您实际上在没有意识到的情况下指定NSASCIIStringEncoding。在我看来,只需使用NSUTF8StringEncoding

此外,除了重复的myString之外,NSString *content = [[NSString alloc]initWithFormat:@"%@", myString];绝对没有任何作用。删除该行,然后使用[myString writeToFile:....