AFNetWorking.Itsを使用してファイルをダウンロードしています。そして、私は "/ Documents"にファイルを保存しましたが、私はこの要求を再度呼び出すと再びダウンロードされました。 NSURLCacheのようなこれらのファイルをキャッシュする方法はありますか?もう一度リクエストしてAFでフォルダ内に見つけたら、ダウンロードせずにもう一度読む。AFNetworkingのキャッシュファイルをダウンロードします。
ここに私のコードです。
AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSString * urlString = @"http://wiki.chinaxue.com/images/e/ee/super.docx";
NSString * string = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest * requesturl = [NSURLRequest requestWithURL:[NSURL URLWithString:string]];
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:requesturl progress:^ (NSProgress * _Nonnull downloadProgress) {
//
NSLog(@"%lld---%lld",downloadProgress.totalUnitCount, downloadProgress.completedUnitCount);
} destination:^NSURL *_Nonnull(NSURL *_Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString * DocumentPath = [KYCachedManager Share].documentPath; // filePath where download files stored
NSString * documentName = [NSString stringWithFormat:@"%@",response.suggestedFilename];
NSString *path = [DocumentPath stringByAppendingPathComponent:documentName];
MBLog(@"%@",path);
return [NSURL fileURLWithPath:path];
} completionHandler:^(NSURLResponse *_Nonnull response, NSURL * _Nullable filePath,NSError * _Nullable error) {
MBLog(@"%@",filePath);
complete(filePath);
}];
downloadTaskから「response.suggestedFilename」を取得しようとしましたが、失敗しました。 別の質問:リクエストなしでresponse.suggestedFilenameを取得するにはどうすればよいですか?その後、私はfileManagerを使って自分自身を見つけることができました。見つかった場合はelse要求を読んでください。
私はアプリケーションを段階的に実行します。私は最初にファイルの終了を要求し、次にWi-Fiを閉じてもう一度要求し、ネットワークエラーによるエラーで完全なブロックを実行します。それはキャッシュされたことが動作していないことを証明しています –
その何かを予測するための十分な説明ではありません。 –
私のコードを試しましたか? –