0

ユーザーが Web サイトから写真を表示できるようにするアプリを作成しています。画面に写真をロードし、ユーザーが写真をタップしたら、お気に入りに追加するオプションを提供します。

彼が画像をオフラインで表示できるように、後で NSUserDefaults に入る NSMutableDictionary に UIImageJpegRepresentation を保存します。

ユーザーがオンライン画像表示セクションにいるときに、お気に入りの画像を見つけたら、それをお気に入りから削除できます (NSData を NSUserDefaults に保存したものと比較して、それがお気に入りの 1 つであるかどうかを確認します)。

ここで問題があります。ユーザーがお気に入りセクションに移動して NSUserDefaults から画像をロードすると、NSUserDefaults の NSData と画面上の画像ビューの画像の NSData の比較が失敗します。そのため、お気に入りセクションで画像をタップすると、画像自体が NSUserDefaults のお気に入りであることが検出されず、何らかの理由で 2 つの NSData が異なると思います。

誰かがなぜこれが起こるのかを明らかにし、潜在的にそれを解決する方法についてのヒントを与えることができますか?

4

1 に答える 1

1

画像は異なる方法で圧縮されている可能性がありますUIImageJPEGRepresentation-- JPEG は非可逆形式です。

それ以外は、これはあなたが述べた目標を達成するための最良の方法とは思えません. ユーザーが多数の画像を表示していて、お気に入りの画像が多数ある場合、これはパフォーマンスが非常に低下します。はるかに優れた解決策は、URL などの何らかの画像 ID を保存することです。URL 文字列の比較は、画像全体を比較するよりも桁違いに高速である可能性があります。

于 2012-07-01T23:58:41.227 に答える