0

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

为了让他离线查看图像,我将 UIImageJpegRepresentation 存储在 NSMutableDictionary 中,该字典随后进入 NSUserDefaults。

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

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

有人可以阐明为什么会发生这种情况并可能就如何解决它给出提示吗?

4

1 回答 1

1

图像可能被不同的压缩方式UIImageJPEGRepresentation——JPEG 是一种有损格式。

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

于 2012-07-01T23:58:41.227 回答