2012-07-01 3 views
0

사용자가 웹 사이트에서 사진을 볼 수있는 앱을 만들고 있습니다. 화면에 사진을로드 한 다음 사용자가 사진을 탭하면 즐겨 찾기에 추가 할 수있는 옵션을 제공합니다.NSData로 UIImage를 저장하면 다른 결과가 나타납니다.

이미지를 오프라인으로 볼 수 있도록 NSMutableDictionary에 UIImageJpegRepresentation을 저장하고 나중에 NSUserDefaults에 저장합니다.

사용자가 온라인 이미지보기 섹션에있는 경우 즐겨 찾는 이미지를 발견하면 즐겨 찾기에서 제거 할 수 있습니다 (NSData와 NSData를 비교하여 즐겨 찾기에 추가했는지 확인합니다). NSUserDefaults).

사용자가 즐겨 찾기 섹션에 들어가서 NSUserDefaults에서 이미지를로드하면 NSUserDefaults의 NSData와 스크린의 이미지 뷰의 이미지 NSData를 비교할 수 없습니다. 따라서 그가 즐겨 찾기 섹션에있는 동안 이미지를 두드리면 이미지 자체가 NSUserDefaults에서 좋아하는 것으로 감지되지 않으며 두 가지 NSData가 어떤 이유로 다른 것으로 가정합니다.

누군가이 문제가 발생하는 이유를 밝히고 잠재적으로 해결 방법에 대한 힌트를 제공 할 수 있습니까?

+0

isEqualToData 사용 : –

답변

1

이미지가 UIImageJPEGRepresentation에 의해 다르게 압축 될 수 있습니다. JPEG은 손실 형식입니다.

그 외, 이것은 명시된 목표를 달성하는 최선의 방법으로 보이지 않습니다. 사용자가 많은 이미지를보고 즐겨 찾기 이미지가 많으면 매우 잘 수행되지 않습니다. 더 나은 해결책은 이미지 ID와 같은 일종의 이미지 ID를 저장하는 것입니다. URL. URL 문자열 비교는 전체 이미지를 비교하는 것보다 훨씬 빠르게 진행됩니다.

+0

예, 동의합니다. 그러나 유일한 문제는 URL을 저장하면 사용자가 오프라인으로 볼 수 없다는 것입니다. 그리고 저는 약 100 개의 이미지 만 저장할 계획입니다. 너무 많습니까? –

+0

원한다면 이미지도 저장할 수 있습니다. NSUserDefaults (파일 시스템이 아닌)에 저장하는 것이 좋을 경우 URL 매핑 이미지의 NSDictionary를 저장할 수 있습니다. 사전에 URL로 키가있는 경우 이미지에 즐겨 찾기가 있음을 알 수 있습니다. –

+0

죄송합니다. 답장하는 데 너무 오래 걸렸습니다. 그래서 당신이 말하는 것은 사전에 URL-> 이미지 파일 이름을 저장하는 것입니다. 그럼 본질적으로 내가 저장된 이미지 파일을 화면에로드 한 것과 비교할 것이므로 비교할 시간이 적고 NSUserDefaults에서 사용되는 메모리가 적다는 것을 알 수있을 것입니다. –

관련 문제