我的应用程序必须下载一个非常大的文件(390Mb),我正在使用TCBlopDownloadSwift进行下载(我将其转换为swift 2.0并且工作正常)并且我进行了后台下载配置.我想,当app强制退出时能够恢复下载.我发现当应用程序退出时,我仍然可以在缓存中找到下载的数据(在"com.apple.nsurlsessiond/Downloads /"+ bundleIdentifier中)作为tmp文件.但是当我尝试使用以下方法获取下载数据时:
func dataInCacheForName (name : String) -> NSData? { let PathToCache = (NSSearchPathForDirectoriesInDomains( NSSearchPathDirectory.CachesDirectory , .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent("com.apple.nsurlsessiond/Downloads/" + bundleIdentifier) let path = (PathToCache as NSString).stringByAppendingPathComponent(name) let data = NSData(contentsOfFile: path) print("data : \(data?.length)") return data }
它返回nil,但文件不是nil.我可以移动文件,所以我尝试在文档中移动文件.但是如果我尝试使用数据继续下载,我会收到错误:
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
后台下载的简历数据无效.后台下载必须使用http或https,并且必须下载到可访问的文件.
并在URLSession中
(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError sessionError: NSError?) error userInfo : Optional([:]) : Optional(Error Domain=NSURLErrorDomain Code=-3003 "(null)")
错误代码-3003表示无法写入文件
我看过很多帖子但却找不到答案
最有希望的是https://forums.developer.apple.com/thread/24770