У меня есть приложение, которое отображает текстовые данные с изображениями и/или видео, которое отображается в UITableView
. Теперь у меня есть требование, чтобы данные были доступны в автономном режиме. Я думаю о pruge и хранении данных каждый раз, когда у меня есть соединение. Новые данные загружаются. Как это может быть достигнуто - хранение данных в таблице mysql или любом другом решении. Обратите внимание, что я использую AFNetworking для потоковой передачи изображений в uiimageview. Изображения и видео должны храниться как blob - это локальная база данных mysql? Обратите внимание, что мой проект не использует coredata.Как хранить данные JSON с изображениями и видео в автономном режиме?
ответ
Лучшим способом, вероятно, будет загрузка и сохранение медиафайлов в каталоге caches
.
Затем, когда вам нужно получить доступ к файлу, вы можете проверить, существует ли он, и если да, используйте его, а если нет, обрабатывайте это условие любым способом, который вам нужен.
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if(![fileManager fileExistsAtPath:[cachePath stringByAppendingPathComponent:@"myfile.zip"]]) {
//create it, copy it from app bundle, download it etc.
}
//start using it
Каталог кэшей не подкреплен с остальной частью вашего приложения, так что если у вас есть большие файлы, которые вы не повлияете на пользователь размеров резервного хранилища таким образом.
Если вы абсолютно должны иметь файлы в резервной копии, используйте каталог Documents
вместо каталога caches
.
Вы сказали, что используете AFNetworking
, который может легко загружать файлы в файл и даже имеет поддержку для превращения задачи в фоновый режим, чтобы он мог завершиться после закрытия приложения.
привет спасибо за ваш ответ. U означает, что я должен хранить изображения & данные JSON в каталоге кэшей? – veereev
Правильно Veereef. Храните изображения и данные json в каталоге кэшей, а затем перед тем, как вы получите доступ к ним, проверьте, есть ли они. Если нет, загрузите их. – Jeff
Спасибо, что и предложили. – veereev