Во-первых, это не вопрос о URLSessionDelegate
методах, которые не срабатывают. Скорее это вопрос о ORDER , который они запускают.
Проще говоря, когда загрузка завершится, я хотел бы переместить загруженный файл в правильное место назначения и удалить модель, которая представляет задачу загрузки.
Поскольку URLSessionDownloadDelegate
имеет
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)
, который вызывается, когда файл готов, и
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)
, который вызывается при загрузке завершено, я хотел бы переместить файл в первом методе и удалить модель во втором, где мне также нужно обрабатывать случаи ошибок, чтобы я мог собрать свой код обработки случая вместе.
Однако, чтобы переместить файл в нужное место, необходима модель, которую я собираюсь удалить, а это означает, что urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)
должен вызываться перед urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)
, чтобы мой код работать, иначе модель была бы уже удалена, когда я хотел бы использовать ее для перемещения файлов.
Может ли ОС гарантировать, что первая будет вызываться перед второй? Если да, то с какой версии iOS? Кажется, я не могу найти никаких документов по этому поводу. Спасибо!