SDImageCache - imageFromMemoryCache возвращает ноль

Я использую последнюю версию SDWebImage (SDImageCache) и сохраняю изображение по коду

[[SDImageCache sharedImageCache] storeImage:image forKey:@"1"];

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

и я использую

UIImage *image = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:@"1"];

для чтения моего изображения, но объект изображения возвращает ноль. В чем проблема? Спасибо!

1
nl ja de
Вы уверены, что объект изображения не равен нулю, когда вы его сохраняете?
добавлено автор Midhun MP, источник
Хорошо, проверьте с помощью кода - (void) queryDiskCacheForKey: (NSString *): (void (^) (UIImage * image, SDImageCacheType cacheType)) doneBlock метод
добавлено автор Midhun MP, источник
Могу ли я добавить его в качестве своего ответа?
добавлено автор Midhun MP, источник
Из-за вас я создал образец проекта SDWebImage и проверил его работу. +1 для этого
добавлено автор Midhun MP, источник
Да, я уверен, что это НЕ ноль. Потому что я также могу просматривать мои изображения в папке приложения.
добавлено автор Johnny, источник
Да, он работает, он нашел изображение, но когда я устанавливаю imageView.image = image;
добавлено автор Johnny, источник
Ничего не показывает, потянет, продолжай работать сейчас ..
добавлено автор Johnny, источник
Да, конечно, пожалуйста.
добавлено автор Johnny, источник

1 ответы

Когда вы используете:

- (void)storeImage:(UIImage *)image forKey:(NSString *)key

Изображение также сохраняется в кэш диска.

Реализация - это что-то вроде:

- (void)storeImage:(UIImage *)image forKey:(NSString *)key
{
    [self storeImage:image imageData:nil forKey:key toDisk:YES];
}

Поэтому, если вам нужно восстановить изображение с диска, вы можете использовать следующий метод:

- (void)queryDiskCacheForKey:(NSString *)key done:(void (^)(UIImage *image, SDImageCacheType cacheType))doneBlock;

Тип кеша по умолчанию будет SDImageCacheTypeNone , поэтому, если вам нужно указать тип кеша, используйте перечисление SDImageCacheType .

enum SDImageCacheType
{
    /**
* The image wasn't available the SDWebImage caches, but was downloaded from the web.
*/
    SDImageCacheTypeNone = 0,
    /**
* The image was obtained from the disk cache.
*/
    SDImageCacheTypeDisk,
    /**
* The image was obtained from the disk cache.
*/
    SDImageCacheTypeMemory
};

Надеюсь, это поможет вам.

3
добавлено
Спасибо, ты действительно спас меня! задача решена
добавлено автор Johnny, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.