Как загрузить несколько небольших изображений с сервера с базовой аутентификацией HTTP
и загрузить их асинхронно в UICollectionView
. Код ниже хорошо работает для сервера без какой-либо аутентификации, но файлы будут храниться за Basic auth.Загрузить изображения UICollectionViewCell через аутентифицированный NSURLConnection
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
BrowseCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
int row = [indexPath row];
NSString *fileName = [files objectAtIndex:row]; //NSArray *files
NSString *filePath = [thumbDir stringByAppendingPathComponent:fileName];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *strURL = [NSString stringWithFormat:@"http://www.somethng.com/thumbs/%@", fileName];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
[data writeToFile:filePath atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
cell.imageView.image = [UIImage imageWithContentsOfFile:filePath];
[cell setNeedsLayout];
});
});
cell.imageView.image = [UIImage imageNamed:@"placeholder.png"];
}
else
{
cell.imageView.image = [UIImage imageWithContentsOfFile:filePath];
}
cell.imageName = fileName;
return cell;
}
Как я совмещаю NSURLConnection
, который охватывает authenticationChallenge с cellForItemAtIndexPath
методом для того, чтобы загрузить все изображения в клетку, как только он загружен?
Имеет ли смысл подкласс NSURLConnectionDelegate
и отправить indexPath для перезагрузки ячейки из этого другого класса? Есть ли лучший способ сделать это?
Я фактически повторно загружаю загруженные изображения в разных частях приложения и хочу, чтобы приложение запускалось в автономном режиме. Как я могу навсегда сохранить изображения для автономного использования и получить к ним доступ по имени файла с помощью SDWebImage? – yosh