2016-12-07 8 views
0

В UITableViewCell У меня есть много вида изображения, который будет загружать изображения из URLХранить изображение в кэше Objective C

Я хочу, чтобы сохранить изображение в кэше, так что, когда я прокручиваю снова не следует загружать из URL

Мой код

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
       [indicator startAnimating]; 
       [indicator setCenter:cell.image_VW.center]; 
       [cell.contentView addSubview:indicator]; 
NSString *url_STR = [NSString stringWithFormat:@"%@news/%@",IMAGE_URL,[tmp_NEWS valueForKey:@"image"]];    
NSString *url_STR = [NSString stringWithFormat:@"%@news/%@",IMAGE_URL,[tmp_NEWS valueForKey:@"image"]];     
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    //retrive image on global queue 
    UIImage * img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url_STR]]]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
        [indicator removeFromSuperview]; 
    NEWS_BIG_CELL * cell = (NEWS_BIG_CELL *)[self.tbl_CONTENTS cellForRowAtIndexPath:indexPath]; 
    //assign cell image on main thread 
    //cell.image_VW.contentMode = UIViewContentModeScaleAspectFit; 
      cell.image_VW.image = img; 
    }); 
}); 
+0

use SDwebimageview, –

ответ

0

Для простого решения является SDWebImage для кэширования изображения gitHub ссылка

в методе UITableViewCell cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 

    [cell.image_VW sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
    return cell; 
} 
0

Прежде всего, необходимо проверить, данные не ноль от dataWithContentsOfURL, а затем, если проверка верно:

вы можете сохранить изображение как NSData в NSUserDefaults с его URL в качестве ключа (SetObject: (NSData) forKey: (URL, как NSString)) этого предпочтение, так что в следующий раз вы можете проверить кеш, если есть какие-либо данные для URL-адреса, чтобы отображать его немедленно, не получая его снова из Интернета (objectForKey: (URL как NSString)).

+0

Значит, если у меня есть n количество изображений, также будет NSUserdefaults хранить много данных ...? –