NSURLSessionDownloadTask downloadTask:didFinishDownloadingToURL文件不存在?

时间:2015-08-07 14:09:04

标签: ios objective-c ipad 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

任何人都可以帮助找到下载文件的路径或处理此类场景吗? 我做了一个寻找解决方案的研究,但很遗憾地说,无法在任何地方找到它

1 个答案:

答案 0 :(得分:2)

调试应用程序时,自iOS8起,每次启动调试会话时文件路径都会更改(至少在模拟器中)。

检查路径中的app-identifier,有时会在调试时更改。

从iOS8开始,你应该将它用于fileURLs:

var_dump()

NSURL *documentsPath = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject]; 我用它来返回文件URL,保存文件

setDownloadTaskDidFinishDownloadingBlock:

打开文件

return [documentsPath URLByAppendingPathComponent:fileName];

删除文件

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName];