Гарантированный порядок вызовов URLSessionDelegate - PullRequest
0 голосов
/ 27 мая 2020

Во-первых, это не вопрос о 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? Кажется, я не могу найти никаких документов по этому поводу. Спасибо!

...