检索后无法使用缓存的NSData对象

时间:2013-01-26 16:37:06

标签: ios caching uiimage nsdata

我正在缓存包含从网络检索到的图像数据的NSData对象。在缓存之前图像显示正确。当我从缓存中检索数据对象时,即使数据对象相同,数据也不能再用于创建UIImage。

请参阅下面代码的相关摘要

NSData *webData= [NSData dataWithContentsOfURL:webPath]; //retrieve from web
UIImage *webImage = [UIImage imageWithData:webData]; //works fine

[webData writeToURL:filePath atomically:YES]; //cache
NSData *cacheData = [NSData dataWithContentsOfURL:filePath]; //get from cache
if ([cacheData isEqualToData:webData]) NSLog(@"Equal"); //Data objects are equal

UIImage *cacheImage = [UIImage imageWithData:cacheData]; //cacheImage is nil

我可以通过更改将数据存储到缓存的方式来解决问题

NSData *temp = UIImageJPEGRepresentation(webImage, 1.0):
[temp writeToURL:filePath atomically:YES];

现在webDatacacheData不再相等,但cacheImage不是nil且显示正确。

编辑 - 经过一些测试后,我意识到我也使用UIImageJPEGRepresentation也遇到了同样的问题。

任何人都知道为什么会这样? 感谢。

1 个答案:

答案 0 :(得分:0)

弄清楚问题是我在视图控制器完全加载之前尝试完成所有这些操作。