13

我已经实现了 NSURLSessionDownloadTask 来同时下载多个视频。在正常情况下,一切正常。后台获取也正在工作。但是当我关闭应用程序并重新启动应用程序并执行相同的 downloadTask: didFinishDownloadingToURL 时,我得到的临时文件路径是错误的。该文件在路径中不存在。当我通过查找器检查路径时,我发现文件存在,唯一的区别是提供的路径不包含文件名,并且存在与应存储文件的父文件夹同名的额外文件夹。请在下面找到共享的路径

/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

任何人都可以帮助找到下载文件的路径或处理这种情况吗?我做了研究以找到解决方案,但很遗憾地说这在任何地方都找不到

4

1 回答 1

2

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

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

从 iOS8 开始,您应该将其用于文件 URL:

NSURL *documentsPath = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];

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

return [documentsPath URLByAppendingPathComponent:fileName];

打开文件

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName];

删除文件

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName];
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
于 2015-08-13T09:03:54.353 回答