Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Slava-hacker32
7 / 7 / 2
Регистрация: 16.11.2011
Сообщений: 251
#1

Кеширование картинок

07.11.2014, 15:39. Просмотров 1204. Ответов 8
Метки нет (Все метки)

Доброго времени суток. Подскажите как правильно организовать хранение и отображение картинок. В json пакете получаю адреса картинок с этим проблем нет. Но как правильно организовать оффлайн версию приложения? Что бы я мог отображать эти картинки без доступа в интернет?
Как вариант можно скачать все картинки по указанным адресам и хранить их где то в каталоге приложения, но насколько эта идея хороша? Ведь картинок может быть много, а это заставит пользователя ждать пока скачаются все картинки (в tableview будет только текст без картинок которые еще только грузятся), плюс размер приложения увеличится или может это нормальная практика, но может подскажите как ее лучще реализовать например скачивание в отдельный поток засунуть? Может есть готовые фреймворки?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2014, 15:39
Ответы с готовыми решениями:

Кеширование Новостной ленты
Доброго времени суток! Есть приложение на Swift суть которого заключается в...

Скролинг картинок
Здравствуйте. Подскажите как правильно сделать процесс листания картинок. Я...

Отображение картинок во втором vc
Вечер добрый. У меня в первом контроллере загружаются картинки. Во втором...

Просмотр картинок, кнопки back, forward
Здравствуйте. Интересует вопрос как сделать перелистывание картинок? Все...

Какой подход правильный в хранении и отображении картинок в приложении?
Доброго времени суток, уважаемые форумчане. Столкнулся вот с какой ситуацией....

8
Vorona
Peace 2 all shining faces
671 / 533 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
08.11.2014, 15:22 #2
да это на самом деле тривиальная задача, в интернете куча способов загрузки картинок в таблицу на фоне
сначала отображаете легковесные данные, потом догружаете тяжеловесные

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

то, что размер приложения увеличивается, это тоже нормально
вы, конечно, можете чистить кеш (данные из базы и картинки), когда пройдет определенное время или перейдете на другой скрин, или закроете приложение и тд
1
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
12.11.2014, 14:42 #3
Пользователь не будет ждать если они будут качаться в другом потоке, чтобы не тормозил UI. Как я делал для отображения в каждой ячейке аватарки пользователя:
Objective-C
1
2
3
4
5
6
7
8
NSURLRequest* request = [NSURLRequest request WithURL:"url картинки"];
__weak UITableViewCell* weakCell = cell;
cell.imageView.image = nil;
[cell.imageView setImageWithURLRequest:request placeholderImage:nil  success^(параметры блока){
weakCell.imageView.Image = image;
[weakCell layoutSubviews];
}
failure:^(параметры блока)
. Ты предусмотри еще то, что у тебя не сразу все картинки качаются. Скачалось, скажем, 8. потом проскроллил - еще 8. B и т.д. И никаких тормозов - приложение летает. Ну а если в оффлайне тебе надо будет отображать, то тогда в кордате храни данные
0
Slava-hacker32
7 / 7 / 2
Регистрация: 16.11.2011
Сообщений: 251
12.11.2014, 22:14  [ТС] #4
не, я понимаю что в отдельном потоке будут качаться картинки, меня интересует вопрос, показывать что то на месте предполагаемой картинки, какую то дефолтную картинку или ничего не показывать, пусть будет пустая область?
0
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
12.11.2014, 23:04 #5
Это как ты хочешь. Посмотри выше где я писал. Там placeholderImage нил я ставил. А можешь поставить что тебе нужно)
0
Vorona
Peace 2 all shining faces
671 / 533 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
12.11.2014, 23:47 #6
если на экране немного картинок, то можно активити индикатор ставить, пусть крутится пока картинка не загрузится
а если в таблице много ячеек, то будет немного раздражать куча колесиков, потому лучше что-то дефолтное поставить
0
Slava-hacker32
7 / 7 / 2
Регистрация: 16.11.2011
Сообщений: 251
17.11.2014, 12:22  [ТС] #7
а картинки лучше хранить в файловой системе или в CoreData? Как это скажется на скорости работы приложения или скорость загрузки картинок (или других файлов) из coreData и файловой системы примерно одинаковый?
0
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
17.11.2014, 13:46 #8
я бы хранил в coreData пути на картинки
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
17.11.2014, 13:51 #9
vitali36, главное не абсолютные...
0
17.11.2014, 13:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 13:51

Кеширование данных запросов в приложении
Какие вы знаете инструменты для работы с сетью (http) которые позволяют...

Загрузка картинок по ссылке из массива
Доброго вечера всем? вообщем занимаюсь парсингом json, есть массив в который я...

Загрузка картинок в ячейках TableView
Всем привет! Метод LoadingImage вызывается при создании ячейки tableview, а в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru