Мое приложение должно загрузить довольно большой файл (390Mb), Я использую TCBlopDownloadSwift для загрузки (я преобразовал его для swift 2.0, и он отлично работает), и я сделал конфигурацию для загрузки фонового изображения. Я хочу, когда приложение перестанет работать, чтобы возобновить загрузку. Я обнаружил, что когда приложение закрывается, я все еще могу найти загруженные данные в кеше (в "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