-1

電話がオフライン状態の場合にページをロードできるように、HTML ページを iPhone のドキュメント ディレクトリにローカルに保存しようとしています。

私の問題は、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];

コンテンツがファイルへの書き込みを停止する原因は何ですか?

または、ドキュメント ディレクトリに保存するのではなく、オフラインの Web ページを表示するためのより良い解決策を見つけた人はいますか?

ありがとう

4

1 に答える 1

1

これにはいくつか問題がある可能性があります。stringWithFormat:1:パス コンポーネントを追加するために使用しません。NSString にはそのためのメソッドがあります。

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

2: NSStringEncodingConversionAllowLossy は、 に対して定義されていない列挙型の一部であるためwriteToFile:、それを使用することで、実際にはNSASCIIStringEncoding気づかずに指定していることになります。私の意見では、NSUTF8StringEncoding代わりに使用してください。

また、NSString *content = [[NSString alloc]initWithFormat:@"%@", myString];重複する myString 以外はまったく何もしません。その行を消去して使用するだけです[myString writeToFile:....

于 2013-04-10T14:47:46.130 に答える