Подтвердить что ты не робот

Ошибка NSURLConnectionDownloadDelegate

Теперь, когда запущено 5.0, и мы можем обсудить его, не нарушая Apple NDA, у меня есть проблема с новой версией NSURLConnection. У этого есть новый делегат, NSURLConnectionDownloadDelegate с двумя ключевыми методами.

  • connection:didWriteData:totalBytesWritten:expectedTotalBytes: вызывается несколько раз, пока выполняется загрузка файла.

  • connectionDidFinishDownloading:destinationURL: вызывается один раз, когда загрузка завершена.

Затем загруженный файл должен быть в destinationURL (по крайней мере, для жизни этого метода - намерение состоит в том, чтобы вы его получили и перенесли его где-то постоянным). Проблема в том, что она не существует. Этот каталог пуст. Я сообщил об этом как об ошибке для Apple, и они говорят мне, что это дубликат проблемы, о которой они уже знают.

Если у кого есть обходной путь для этого или он может успешно использовать этот делегат, сообщите мне.

UPDATE 10/17/2011: я отказался от этого и вернулся к старому делегату, который все еще отлично работает в версии 5.0, хотя в документации говорится, что методы делегата доступны только через 4.3.

4b9b3361

Ответ 1

Видимо, только для использования с приложениями в Newsstand. Этот парень, возможно, нашел работу вокруг:

http://adamernst.com/post/18948400652/a-replacement-for-nsurlconnectiondownloaddelegate

В качестве альтернативы просто используйте NSURLConnection. Но, если вы реализуете методы NSURLDownloadDelegate, они, похоже, переопределяют стандартные методы делегатов NSURLConnection. Если это удобный метод didWriteData: метод NSURLConnectionDownloadDelegate, который вы хотите, например. для обновления UIProgressView вы можете достичь того же, захватив общий размер файла из ответа HTTP и используя метод didReceiveData: NSURLConnection.

Ответ 2

Документация сообщает, что файл гарантированно существует только при вызове метода делегата, поэтому вам нужно будет скопировать его где-то еще в момент вызова метода делегата.

Google сообщает, что у людей возникают проблемы, когда Сервер отправляет скрытое имя файла и/или mime-тип.

Ответ 3

Люди,

Недавно я обнаружил этот новый протокол NSURLConnectionDataDelegate. Однако документация iOS 5 не завершена.

Новый протокол NSURLConnectionDataDelegate содержится в документации, но новая версия NSURLConnection, которая его использует, не является. Эта документация все еще говорит нам использовать устаревшие методы протокола NSURLConnectionDelegate.

Я понимаю, что NSURLConnection теперь загрузит данные с удаленного URL-адреса непосредственно в файл на локальном диске, как и класс NSURLDownload в Mac OS. Как мне понять, как это работает?

Заголовок для NSURLConnection намекает, что объект соединения выводит то, что вы хотите, на основе какой версии протокола NSURLConnectionDelegate соответствует делегат. Это кажется действительно застенчивым. Я никогда не слышал об использовании соответствия протокола делегату как способа управления поведением класса раньше.