2014-10-23 3 views
1

У меня проблема с лучшим подходом к созданию приложения, которое нужно загружать и показывать в формате pdf, оно питается JSON, имеющим ссылки на 147 файлов PDF размером от 1 до 2 МБ.Загрузить большой файл

Вопросы:

Каков наилучший подход, чтобы загрузить все файлы на IPad?

Должен ли я использовать AFNetworking 2.0?

Является ли NSFileManager способом сохранения всех файлов?

Проблемы могут возникнуть у меня:

С асинхронной загрузки, если потеряно соединение или нет больше места на IPad, каковы счетчик Mesures?

Есть ли учебники или примеры, которые касаются этой ситуации?

Извините за все вопросы, но я новичок в этом. С наилучшими пожеланиями.

+1

Это слишком широкий. Ограничьте свой вопрос до одного, четкого, конкретного вопроса, который у вас есть. – rmaddy

+0

Я не думаю, что он слишком широк, мне просто нужны некоторые рекомендации, просто да или нет, я начну. Просто нужно несколько рекомендаций :) – Bruno

+0

Проблема с рекомендациями в том, что не каждый может согласиться. Вот почему целенаправленные и конкретные вопросы являются лучшими. – Aaron

ответ

1

Каков наилучший способ загрузки всех файлов на iPad?

Это действительно широкое предложение, как предложил @rmaddy. Конкретные вопросы легче ответить. Существует множество способов загрузки файла через HTTP-запрос на ваше устройство, каждый из которых имеет плюсы и минусы в зависимости от вашей ситуации.

Должен ли я использовать AFNetworking 2.0?

Несомненно. Вы не получите от меня никаких аргументов. Это широко используемый и надежный API для взаимодействия с HTTP-ресурсами.

Является ли NSFileManager способом сохранения всех файлов?

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

С асинхронной загрузкой, если утеряно соединение или нет места на iPad, каковы счетчики?

Я не уверен на 100%, поэтому я не могу говорить точно, что происходит в этом случае. AFNetworking может оказать некоторую помощь путем записи во временный файл во время загрузки и т. Д.

Есть ли учебники или примеры, которые касаются этой ситуации?

У меня есть пример проекта на Github, который показывает таблицу файлов, которую вы можете скачать. Вы можете следить за ходом ваших загрузок, приостанавливать каждый запрос, возобновлять и отменять. Когда вы закончите, вы сможете просмотреть загруженный файл.Он использует AFNetworking и может быть полезным для вас:

https://github.com/chefnobody/StreamingDownloadTest

1

При загрузке больших файлов, основной совет должен был бы избежать при попытке загрузить их в память, как вы их скачать. Вместо этого убедитесь, что вы передаете их прямо в постоянное хранилище. С точки зрения обработки ошибок, связанных с пространством, просто убедитесь, что вы проверяете объекты NSError, которые возвращаются вам в обработчиках завершения или в соответствующих методах делегатов.

  • При использовании AFNetworking, вы можете указать outputStream в AFURLConnectionOperation ссылаться на NSOutputStream, что вы создаете, ссылки на некоторых путях в вашем постоянном хранении.

    См. Например Memory pressure issue while downloading multiple files using AFNetworking.

  • В качестве альтернативы вы можете использовать NSURLSession (через AFNetworking или самостоятельно) и создать экземпляр NSURLSessionDownloadTask, который делает то же самое.

    Google "NSURLSessionDownloadTask пример", и вы найдете множество ссылок. Блочная версия downloadTaskWithURL невероятно проста. Для фона загрузки является немного более сложным и требует делегирования на основе реализации (см Выгрузка файлов и Обработка IOS фоновой активности секции URL Loading System Programming Guide: Using NSURLSession или наблюдать WWDC 2013 video, What’s New in Foundation Networking.)

В любом случае, вам избежать некоторых проблем с потреблением памяти, связанных с загрузкой больших файлов.

Смежные вопросы