Как я могу сохранить изображение, полученное из Интернета, в комплекте приложений? - PullRequest
0 голосов
/ 28 октября 2008

Я занимаюсь разработкой приложения для iPhone, и в этом приложении у меня есть одно TableViewController, и что TableViewController состоит из ячейки таблицы Custom.
в эту ячейку я загружаю изображение из URL, но scrolling не так гладко (потому что каждая ячейка загружает изображения каждый раз, когда происходит прокрутка).

Поэтому я решил сохранить эти изображения в папке документов приложения, но я не знаю, как использовать папку документов в iPhone, когда приложение находится в рабочем состоянии.

Есть предложения?

И на других форумах я обнаружил, что SQLITE имеет тип данных blob для хранения двоичных данных,

Какой метод эффективен, папка документа или sqlite для хранения изображения?

Ответы [ 2 ]

2 голосов
/ 28 октября 2008

Хранение изображений на устройстве может несколько улучшить ситуацию, но это не сделает прокрутку по-настоящему плавной. Причина, по которой прокрутка имеет тенденцию к прерывистости, заключается в том, что синхронная функция в коде вашей ячейки означает, что вы блокируете цикл выполнения, что предотвращает анимацию. Если вы хотите ускорить прокрутку, вам нужно избавиться от события блокировки, сделав его асинхронным (хотя это все равно может привести к быстрой прокрутке, если асинхронные обратные вызовы занимают много времени ЦП), или отключить код блокировки основная нить.

Если вы переместите свои загрузки из основного потока, то либо отдельные файлы, либо база данных sqlite3 будут работать нормально. Другая большая проблема, которую вы обнаружите, заключается в том, что ячейки не обновляются при прокрутке. Это означает, что если вы выполняете асинхронную загрузку изображения в ответ на загрузку ячейки, изображение не будет отображаться в ячейке, пока пользователь не закончит прокрутку, что, как правило, нежелательно. Чтобы этого избежать, вам нужно заранее загружать изображения в оперативную память, прежде чем пользователь их прокрутит.

0 голосов
/ 28 октября 2008

Вы можете использовать NSFileManager createFileAtPath для сохранения любого NSData в файл.

Чтобы получить каталог документов, используйте это:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...