最近我创建了一个帖子:NSData 缓存例程
但是,现在我想更具体地说明我的要求。
你看,我有“轮播”,这实际上是一个有 7 个图像的滚动视图。当它第一次出现时,它会从互联网加载图像并自动滚动。
我的问题是,我不想每次滚动时都加载图像。幸运的是,有一些“缓存”机制在后台运行。因此,当它加载所有图像,然后终止应用程序,然后在没有互联网连接的情况下启动时,所有图像都已设置,因此,它以某种方式从某个地方加载它。
有我使用的代码:
NSError *error;
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", WEBSITE, mdl.imageSubUrl]] options:NSDataReadingUncached error:&error];;
NSLog(@"data size0? %lu", (unsigned long)data.length);
那就是。您可能想自己尝试一下,加载一些图像,然后以飞行模式重新启动应用程序并检查字节长度。即使我搜索也会有数据,据说,dataWithContentsOfURL
不做任何缓存。
所以,我想要的只是检查是否有数据,如果有,则不下载。像这样的事情:
if (haveData){
self.ivPic.image = [UIImage imageWith:myData];
} else {
NSError *error;
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", WEBSITE, mdl.imageSubUrl]] options:NSDataReadingUncached error:&error];;
NSLog(@"data size0? %lu", (unsigned long)data.length);
}
不幸的是,我不知道如何进行这样的测试(如果有数据)。其次,我不太确定如何加载存储的数据,而不是 dataWithContentsOfURL,它将从主机启动加载。