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

Objective c 将UIImage存储为NSData会返回不同的结果,objective-c,ios5,uiimageview,uiimage,nsdata,Objective C,Ios5,Uiimageview,Uiimage,Nsdata,我正在开发一个应用程序,允许用户在网站上查看图片。我将图片加载到屏幕上,然后一旦用户点击一个,我就给他选择将其添加到收藏夹中 为了让他能够脱机查看图像,我将UIImageJPEG表示存储在NSMutableDictionary中,该字典稍后将进入NSUserDefaults 当用户在“在线图像查看”部分时,如果他遇到喜欢的图像,他可以将其从收藏夹中删除(我通过将NSData与存储到NSUserDefaults中的内容进行比较来检查这是否是他的收藏夹之一) 现在问题来了:当用户进入收藏夹部分并从N

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

为了让他能够脱机查看图像,我将UIImageJPEG表示存储在NSMutableDictionary中,该字典稍后将进入NSUserDefaults

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

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


有人能解释一下为什么会发生这种情况,并可能给出一个解决方法的提示吗?

这些图像可能会被压缩成不同的压缩格式


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

是的,我同意。但唯一的问题是,如果我存储URL,用户将无法脱机查看任何内容。我只打算储存大约100张图片。这太多了吗?如果你愿意,你也可以存储图像。如果您希望将它们保存在
NSUserDefaults
(而不是文件系统,这可能更可取),您可以存储URL->image映射的
NSDictionary
。如果字典中有一个URL作为键,那么您知道该图像已被收藏。很抱歉,我花了这么长时间才回复。那么,您的意思是将URL->图像文件名存储到字典中?因此,基本上我会将存储的图像文件与我在屏幕上加载的图像文件进行比较,从而减少比较时间,减少NSUserDefaults中使用的内存,对吗?