0

AFNetworking を使用して PDF をダウンロードし (毎週変更されます)、次のコードを使用してドキュメント ディレクトリに保存します。

//Get the PDF    

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.somewebsiteaddress/CurrentEdition1.pdf"]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath =  [documentsDirectory stringByAppendingPathComponent:@"CurrentEdition1.pdf"];

operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Successfully downloaded file to %@", filePath);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

[operation start];

次に、UIWebView のアプリの別のセクションに保存されたファイルを (ダウンロード後に) 読み取り、次のコードを使用します。

//Now create Request for the file that was saved in your documents folder

NSString *resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle]  resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];

NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"CurrentEdition1.pdf"];

NSURL *url = [NSURL fileURLWithPath:filePath];

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

[webVieweedition setUserInteractionEnabled:YES];

[webVieweedition setDelegate:self];

[webVieweedition loadRequest:requestObj];

テストするためにいくつかの単一ページのpdfドキュメントを使用しました-それらをサーバーにロードしてから、それらがダウンロードされ、変更されたときに表示されるかどうかを確認しました。問題は、これが約 50% の時間しか機能していないように見えることです。新しいファイルを作成すると、UIWebView に正しいファイルが表示されることもあれば、新しいファイルではなく前のファイルが表示されることもあります。UIWebView にアクセスしようとする前に、ダウンロード完了メッセージが表示されるまで待っています (クライアントがそうしないことはわかっていますが、それはまったく別の質問です)。とにかく、私は XCode を初めて使用し、Web HTML の専門家になりました。これは私の頭を2日間回転させました。ストーリーボード、ARC、XCode 4.6.2 を使用。

4

1 に答える 1

1

私が正しく理解していれば、Webサーバーで変更したにもかかわらず、アプリに同じpdfが表示されることがありますか?理由はキャッシュである可能性があります。キャッシュを無視して、この方法でリクエストを構築してみてください

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.somewebsiteaddress/CurrentEdition1.pdf"]  cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
于 2013-05-22T13:35:07.407 に答える