2

NSURLSessionDownloadTask を使用してファイルをダウンロードしています。ダウンロードされて保存されます。データを正常に表示できます。

残念ながら、テストする iOS シミュレーターしかありません。Xcode の停止ボタンでアプリを閉じるとどうなりますか。次に再起動すると、ファイルはもう存在しません。

しかし、アプリから削除して閉じた場合。cmd + shift + H を 2 回クリックしてリストを実行します。アプリをタップして再起動します。シミュレーターで。ファイルを見つけました。

BOOL found = [[NSFileManager defaultManager] fileExistsAtPath:path];

これはシミュレーターの問題ですか?実際のデバイスでは心配する必要はありませんか?

実際、私はiPhoneでテストすることができました。全く同じ挙動!! どんな説明でも。

NSURLSessionDownloadTask保存する宛先を返す宛先ブロックを送信した でこれを呼び出します。

- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
                                             progress:(NSProgress * __autoreleasing *)progress
                                          destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                    completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler

宛先ブロック コード:

NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
4

2 に答える 2

0

解決策は次のとおりです。

 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{

    //location is the temporary "destination" which you returned (can be Temp directory) and it now contains the downloaded file. Now copy the file to a new location (eg documents directory) for future use.

     BOOL fileCopied = [[[NSFileManager defaultManager] copyItemAtURL:location toURL:documentsDirectoryURLForSavingFileForFutureUe error:&error];


    }
于 2015-04-07T19:15:05.843 に答える