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

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

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

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

и я использую

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

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


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


Ответы (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
};

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

person Midhun MP    schedule 07.02.2013