Я пишу приложение, которому нужно хранить несколько изображений в кеше. Я пытаюсь сделать это с помощью NSCache, и код кажется хорошим, но не сохраняет изображения в кеше. У меня есть этот код:NSCache не работает
кэш является глобальной, объявленный в .h: NSCache *cache;
-(UIImage *)buscarEnCache:(UsersController *)auxiliarStruct{
UIImage *image;
[[cache alloc] init];
NSLog(@"cache: %i", [cache countLimit]);
if ([cache countLimit] > 0) { //if [cache countLimit]>0, it means that cache isn't empty and this is executed
if ([cache objectForKey:auxiliarStruct.thumb]){
image = [cache objectForKey:auxiliarStruct.thumb];
}else{ //IF isnt't cached, is saved
NSString *imageURLString = [NSString stringWithFormat:@"http://mydomain.com/%@",auxiliarStruct.thumb];
NSURL *imageURL = [NSURL URLWithString:imageURLString];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
image = [UIImage imageWithData:imageData];
[cache setObject:image forKey:auxiliarStruct.thumb];
}
}else{ //This if is executed when cache is empty. IS ALWAYS EXECUTED BECAUSE FIRST IF DOESN'T WORKS CORRECTLY
NSString *imageURLString = [NSString stringWithFormat:@"http://mydomain.com/%@",auxiliarStruct.thumb];
NSURL *imageURL = [NSURL URLWithString:imageURLString];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
image = [UIImage imageWithData:imageData];
[cache setObject:image forKey:auxiliarStruct.thumb];
}
return image;
}
Эта функция вызывается в другой функции с этим:
UIImage *image = [self buscarEnCache:auxiliarStruct];
Это работает, потому что изображение отображается на экране, но не сохраняется в кеше, линия, которая, как мне кажется, не работает:
[cache setObject:image forKey:auxiliarStruct.thumb]; //auxiliarStruct.thumb is the name of the image
Кто-то знает, почему кеш не работает? Благодаря!!
пс: простите за мой английский, я знаю, что это плохо
Я перемещаю эту строку в viewDidLoad, но результат тот же. –
Извините, что я сделал ошибку в своем ответе, теория все та же, за исключением того, что вы назначаете и запускаете неправильный путь. – rckoenes
это работает, спасибо !!! –