gpt4 book ai didi

ios - 缓存以 NSIndexPath 为键返回错误的 objectForKey

转载 作者:行者123 更新时间:2023-11-29 13:21:30 26 4
gpt4 key购买 nike

在我的 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];

当我滚动到表格 View 的底部时,每个单元格都显示正常。向上滚动后,单元格也显示正常。但是,当我在向上滚动后开始向下滚动时,单元格开始出现重复。

我对索引路径执行的每个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com