将UIImage存储为NSData会返回不同的结果

时间:2012-07-01 23:17:16

标签: objective-c ios5 uiimageview uiimage nsdata

我正在构建一个允许用户查看网站图片的应用。我在屏幕上加载图片,然后一旦用户点击一个,我给他选择将其添加到他的收藏夹。

为了让他能够离线查看图像,我将UIImageJpegRepresentation存储在NSMutableDictionary中,后者进入NSUserDefaults。

当用户处于在线图像查看部分时,如果他遇到了受欢迎的图像,他可以将其从收藏夹中删除(我通过将NSData与我存储在NSUserDefaults中的内容进行比较来检查这是否是他的最爱之一)。

现在出现问题:当用户进入收藏夹部分并从NSUserDefaults加载图像时,NSUserDefaults中的NSData与屏幕上图像视图中图像的NSData的比较失败。因此,当他在收藏夹部分中点击图像时,没有检测到图像本身是NSUserDefaults中的最爱,我认为两个NSData由于某种原因是不同的。

有人可以说明为什么会发生这种情况并可能暗示如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

UIImageJPEGRepresentation可能会对图像进行不同的压缩 - JPEG是一种有损格式。

除此之外,这似乎不是实现既定目标的最佳方式。如果用户正在查看大量图像并且具有大量收藏的图像,则这将表现得非常差。更好的解决方案是存储某种图像ID,例如,一个URL。比较URL字符串可能比比较整个图像快几个数量级。