我正在缓存一个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];
现在webData
andcacheData
不再相等,但cacheImage
不是 nil 并且可以正确显示。
编辑 - 经过更多测试,我意识到我也遇到了同样的问题UIImageJPEGRepresentation
。
有谁知道为什么会这样?谢谢。