我希望能够离线查看我的应用以及我桌面上的所有图片。目前我的所有图片都被缓存了。但不是实际的结果表。
NSMutableArray *images;
- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:@"http://xxxxxxx.co.uk/jsonimages.php"];
NSData *jsonData = [NSData dataWithContentsOfURL:url];
NSError *error = nil;
if (jsonData) {
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers error:&error];
images = result[@"images"];
}
}
所以这给了我一个图片网址列表,然后我在桌子上就像这样:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
[cell.thumbnailImageView setImageWithURL:[NSURL URLWithString:encodedString]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
}
使用SDWebimage
缓存encodedString
但是,如果我在没有任何访问互联网的情况下访问应用程序,则不会显示任何图像。这是因为我需要缓存数组吗?
答案 0 :(得分:2)
您在没有互联网的情况下午餐时看不到图像,因为您正在使用内存缓存。如果您希望在退出应用程序时图像仍然存在,则应使用磁盘缓存。您可以配置SDWebimage
库来为您处理此问题。
来自SDWebimage
文档:
也可以使用基于aync的图像缓存存储 独立。 SDImageCache维护内存缓存和可选 磁盘缓存。磁盘高速缓存写操作是异步执行的 它没有为UI添加不必要的延迟。
编辑: 你可以这样做(代码没有经过测试):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableCell";
SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache queryDiskCacheForKey:encodedString done:^(UIImage *image, SDImageCacheType cacheType) {
if (image){
cell.thumbnailImageView.image = image;
}else{
[cell.thumbnailImageView setImageWithURL:[NSURL URLWithString:encodedString] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
[imageCache storeImage:image forKey:encodedString];
}];
}
}];
return cell;
}
答案 1 :(得分:0)