NSURLSessionDownloadTask downloadTask:didFinishDownloadingToURL文件不存在?

Ash*_*n P 13 objective-c ipad ios nsurlsession nsurlsessiondownloadtask

我已经实现了NSURLSessionDownloadTask,可以同时下载多个视频.在正常情况下,每件事都很好.后台提取也有效.但是,当我关闭应用程序并重新启动应用程序并执行相同的downloadTask:didFinishDownloadingToURL我得到的临时文件路径是错误的.该文件不存在于路径中.当我通过finder检查路径时,发现文件存在唯一的区别是提供的路径不包含文件名,并且还存在与应存储文件的父文件夹名称相同的额外文件夹.请找到下面分享的路径

/Users/sfm/Library/Developer/CoreSimulator/Devices/EB96B330-4928-422F-8655-DC0E9781014A/data/Containers/Data/Application/54691CE2-D599-41CA-813B-2A8FF7B868F8/Library/Caches/com.apple.nsurlsessiond/Downloads/com.application.tre/com.application.tre
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助找到下载文件的路径或处理这样的场景吗?我做了一个关于寻找解决方案的研究,但很遗憾地说这找不到任何地方

dOM*_*dOM 2

调试应用程序时,从 iOS8 开始,每次启动调试会话时文件路径都会发生变化(至少在模拟器中)。

检查路径中的应用程序标识符,调试时它有时会发生变化。

从 iOS8 开始,您应该将其用于 fileURL:

NSURL *documentsPath = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
Run Code Online (Sandbox Code Playgroud)

我用它来setDownloadTaskDidFinishDownloadingBlock:返回应该保存文件的fileURL :

return [documentsPath URLByAppendingPathComponent:fileName];
Run Code Online (Sandbox Code Playgroud)

打开文件

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName];
Run Code Online (Sandbox Code Playgroud)

删除文件

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName];
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
Run Code Online (Sandbox Code Playgroud)