NSCache для хранения изображений для UITableView

У меня есть контроллер вида с табличным представлением. в каждой ячейке табличного представления у меня есть изображение, которое извлекается из сети, но многие из них имеют одинаковое изображение. поэтому в настоящее время я занимаюсь хранением полученных изображений в объекте NSCache. это происходит так:

- (void)fetchAvatarForUser:(NSString *)uid completion:(void (^)(BOOL))compBlock { if (!imageCache) { imageCache = [[NSCache alloc] init]; } if (!avatarsFetched) { avatarsFetched = [[NSMutableArray alloc] initWithCapacity:0]; } if ([avatarsFetched indexOfObject:uid] != NSNotFound) { // its already being fetched } else { [avatarsFetched addObject:uid]; NSString *key = [NSString stringWithFormat:@"user%@",uid]; NSString *path = [NSString stringWithFormat:@"users/%@/avatar",uid]; [crudClient getPath:path parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"%@",[operation.response allHeaderFields]); UIImage *resImage = [UIImage imageWithData:[operation responseData]]; [imageCache setObject:resImage forKey:key]; compBlock(YES); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Got error: %@", error); compBlock(NO); }]; } } - (UIImage *)getAvatarForUser:(NSString *)uid { NSString *key = [NSString stringWithFormat:@"user%@",uid]; NSLog(@"Image cache has: %@",[imageCache objectForKey:key]); return [imageCache objectForKey:key]; } 

imageCache – это переменная экземпляра, а также avatarsFetched, crudClient – объект AFHTTPClient. и в виде таблицы:

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; PostCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[PostCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } Post *curPost = [displayedPosts objectAtIndex:indexPath.section]; cell.nickname.text = [curPost nickname]; UIImage *avatarImage = [self.delegateRef.hangiesCommunicator getAvatarForUser:curPost.userID]; if (avatarImage) { cell.avatar.image = avatarImage; NSLog(@"Its not null"); } else { cell.avatar.image = [UIImage imageNamed:@"20x20-user-black"]; } } 

self.delegateRef.hangiesCommunicator возвращает объект (который является сохраненным свойством делегата приложения) с помощью imageCache в качестве переменной экземпляра и двумя методами вверху.

Когда я прокручиваю, я вижу в консоли консоль @ «Ее не нуль», но я не вижу загруженное изображение, но по умолчанию 20х20-пользовательское черное изображение. у кого-нибудь есть идея, почему это происходит? Что я делаю не так?

благодаря!

В вашем коде отсутствуют некоторые вещи. Я не вижу, где вы когда-либо вызывали метод fetchAvatarForUser: complete: на вашем hangiesCommunicator и ваш метод tableView: cellForRowAtIndexPath: метод не возвращает ячейку, поэтому я не думаю, что код, который вы опубликовали, будет компилироваться чисто.

  • IOS 7 UITextView обнаружение связи в UITableView
  • Логика раздела UITableView indexPath
  • Аксессуар Cell усекает UILabel
  • Участник UITableView с использованием расширений swift
  • Изменение текста в статической ячейке UITableView?
  • Отображение таблицы прокрутки вниз при использовании динамической высоты ячейки
  • Пользовательская ячейка просмотра таблицы в Swift, без раскадровки
  • "UITableViewCell? не имеет члена с именем 'textLabel'
  • Восстановить BookCase в iBooks
  • Обновить таблицу Просмотр данных и снятие с охраны соты
  • Скрыть разделительную линию на одном UITableViewCell
  • Interesting Posts

    В чем разница между атомными и неатомическими атрибутами?

    Привязка MonoTouch не может использовать поля

    Вертикально выровнять атрибутный текст в UILabel

    iOS 9: Использование AVPlayerViewController Swift. (перечеркнутая кнопка воспроизведения)

    Обработка TDataSet приводит к Xcode с сервера Datasnap Delphi XE2

    NSLocalizedString предоставляет другой язык, тогда телефон находится в

    Как можно изменить строку с помощьюIndex на inIndex в UITableView?

    Загрузочные изображения не отображаются в домашнем экране с помощью iOS 9

    Почему UITabBarController возвращает сообщение «..should support хотя бы одна ориентация»?

    Как запустить приложение в режиме отладки и режиме выпуска с различными api в ios

    как добавить круг точности в MKnnotation

    Как я могу анализировать содержимое на странице PDF с помощью Swift

    Можете ли вы добавитьTarget в UIButton в классе NSObject?

    Xcode 6.1 – я не могу изменить элементы xib

    Apple LLVM компилятор 4.1 Ошибка

    Давайте будем гением компьютера.