-1

我正在尝试在 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];

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

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

谢谢

4

1 回答 1

1

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

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

二: NSStringEncodingConversionAllowLossy 是未定义的枚举的一部分writeToFile:,所以通过使用它,您实际上是在指定NSASCIIStringEncoding而没有意识到它。在我看来,只是使用NSUTF8StringEncoding

此外,NSString *content = [[NSString alloc]initWithFormat:@"%@", myString];除了重复 myString 之外,什么都不做。擦除那条线,然后使用[myString writeToFile:....

于 2013-04-10T14:47:46.130 回答