0

次のコード行を使用して、html ページのコンテンツをダウンロードし、ディレクトリに保存しています。

NSURL *yoyoyo = [[NSURL alloc] initWithString:@"www.google.com"];
NSData *data = [[NSData alloc] initWithContentsOfURL:yoyoyo]; 
//NSData *data = [NSData dataWithContentsOfURL:[NSURL UrlWithString:url]];
//use this data to write to any path as documentdirectory path + filename.html
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *htmlFilePath = [documentsDirectory stringByAppendingPathComponent:@"file.html"];
[data writeToFile:htmlFilePath atomically:YES];
NSLog(@"Tile Directory: %@", documentsDirectory);

ドキュメント ディレクトリは次のとおりです。

Tile Directory: /Users/xxxx/Library/Application Support/iPhone Simulator/5.1/Applications/D4B3A4CF-E7D0-4D25-A809-B3D3A170A329/Documents

ただし、ファイルを保存する必要があるパスに到達したときに、html ファイルを表示できません。私は問題を整理することができません。誰か助けてください??

4

2 に答える 2

0
NSData *data = [NSData dataWithContentsOfURL:[NSURL UrlWithString:@"yourstringURL"]];

"yourstringURL"実際のURLに変更する必要があります。URLが存在しないか、データをダウンロードできない場合、data変数は存在nilし、ファイルには何も書き込まれません。
PS次のデータ変数から実際のhtml文字列を取得することもできます。

NSString *html = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; //Remove the autorelease if using ARC

次に、htmlを次のファイルに保存します。

[html writeToFile:htmlFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
于 2012-06-18T10:46:02.363 に答える
0

ここでエラーチェックを追加する必要があります。特に、NSURL と NSData に実際に値が含まれている (nil ではない) ことを確認し、参照解除する前に、パス オブジェクトに少なくとも要素が含まれていることも確認してください。また、投稿を編集したときに「www.google.com」の URL を追加しましたが、これは URL ではないため解決されない可能性があります。NSURL は、部分的な URL ではなく、「http://www.google.com」などの完全な形式の URL を優先/要求します。

ファイルが表示されない最も可能性の高いシナリオは、書き込みが実行されない結果となるのnil値です。data

-[NSData -writeToURL:options:error:]ただし、これはより最新の API であり、データの書き出しに問題がある場合は適切なエラーが返されるため、使用に移行することをお勧めします。

NSURL *htmlFileURL = [NSURL fileURLWithPath: htmlFilePath isDirectory: NO];
NSError *error=nil;
if (![data writeToURL: htmlFileURL options: NSDataWritingAtomic error: &error]) {
    NSLog( @"Error writing %@: %@", htmlFileURL, error);
}
于 2012-06-18T10:56:40.660 に答える