在我的cellForRowAtIndexPath
方法中,我有以下代码:
if ([self.cellImageCache objectForKey:indexPath]) {
UIImage *image = [self.cellImageCache objectForKey:indexPath];
[cell.entryView setImage:image];
return cell;
}
Entry *entry = [self.appDelegate.fetchedResultsController objectAtIndexPath:indexPath];
UIImage *image = [JTimelineCellContent imageForEntry:entry];
[cell.entryView setImage:image];
[self.cellImageCache setObject:image forKey:indexPath];
当我滚动到表格视图的底部时,每个单元格都可以正常显示。向上滚动时,单元格也显示正常。但是当我向上滚动后开始向下滚动时,单元格开始出现重复。
我为索引路径执行的每个NSLog搜索都返回正确的值,即使在重复的单元格上也是如此。
最佳答案
NsIndexPath实际上是一个数组,而不是字符串。
因此,您的设计存在缺陷。
尽管可以使用以下类似方法从indexPath生成唯一的字符串:
NSString *uniqueKey = [NSString stringWithFormat:@"key%@%@",indexPath.section,indexPath.row];
因此,您可以:
NSString *uniqueKey = [NSString stringWithFormat:@"key%@%@",indexPath.section,indexPath.row];
if ([self.cellImageCache objectForKey:uniqueKey]) {
UIImage *image = [self.cellImageCache objectForKey:uniqueKey];
[cell.entryView setImage:image];
return cell;
}
Entry *entry = [self.appDelegate.fetchedResultsController objectAtIndexPath:indexPath];
UIImage *image = [JTimelineCellContent imageForEntry:entry];
[cell.entryView setImage:image];
[self.cellImageCache setObject:image forKey:uniqueKey];
关于ios - 缓存以NSIndexPath作为键返回了错误的objectForKey,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14268552/