2011-03-13 6 views
6

현재 사용자가 사진 라이브러리의 이미지를 응용 프로그램에 추가 할 수있는 iOS 응용 프로그램을 만들고 있습니다. 이러한 이미지를 장치 파일 시스템에 저장하고 필요할 때 액세스합니다 (UIScrollView에있을 때 자주 액세스 할 수 있습니다).파일 시스템과 코어 데이터의 이미지 저장

이 방법에 대한 의견을 얻고 싶습니다. 파일 시스템 방법을 유지해야합니까 아니면 CoreData에 이러한 I 이미지를 저장하는 것이 유리한가요?

이 내용에 대한 제안은 크게 감사하겠습니다.

감사합니다.

답변

5

코어 데이터가 실제로 이러한 유형의 데이터를 저장하도록 설계되지는 않았다고 생각합니다. 이렇게하면 이상적인 이미지가 아닌 SQL/관계형 데이터베이스에 이미지 데이터를 저장하는 것과 도덕적으로 동일합니다.

많은 수의 이미지가 하드 타겟 위치에 저장되어있는 상황 (내 이미지 목록은 변경되지 않으므로 모든 응용 프로그램 번들에 포함)과 메타 데이터가 많은 코어 데이터 저장소가있는 것과 비슷한 상황이 있습니다. 이미지에 대해. 이미지의 핵심 데이터에 보관 된 것은 파일 이름이며, 마지막으로 이미지를 볼 시간이되면 런타임 중에 전체 파일 경로를 매시합니다. 지연 시간이나 지연 문제는 없습니다.

UIScrollView에서 이미지를 표시하지 않더라도 코어 데이터 저장소에서 이미지 정보 배열을 가져 와서 셀이 생성 될 때 전체 파일 경로를 생성하는 데 거의 문제가 없을 것이라고 생각합니다. 그것들은 단지 문자열 일 뿐이므로 UIImage를 생성하기위한 코드는 매우 작습니다. UIScrollView가 막 나타날 때와 같이 셀이 생성되기 전에 동일한 정보 배열을 생성하거나 이미지 경로의 배열을 컴파일합니다.

0

핵심 데이터에 넣는 것이 느려질 것이라고 생각합니다. 파일 시스템이 훨씬 빨라질 것입니다.

+0

나는 똑같은 것을 읽었으며, 나는이 일을하면서 사람들의 경험을 측정하려하고 있었다. 대부분의 경우 이미지 모음을 추가 할 때까지 속도가 매우 빨라졌습니다. 속도가 느려지고 속도를 되찾기 위해 앱을 다시 시작해야합니다. 나는 그것이 메모리 문제라고 생각하고 있었다. 그러나 나는 (심지어 악기에서) 어떤 누출도 보지 않았으므로 나는 더 깊게 파야 할 것이다. 당신의 응답을 주셔서 감사합니다. 나는 이것을 잠깐 동안 열어 두겠다. 나는 잠시 다른 사람의 말을 듣지 않는다면 이것을 대답으로 표시 할 것이다. – jabroni

3

축소판보다 큰 파일 시스템 방법을 사용해야합니다.

핵심 데이터에 저장하면 데이터 또는 변형 가능한 특성을 저장해야합니다. 두 경우 모두 이미지로 변환하는 추가 단계가 있습니다. 파일을 저장하는 경우 UIImage를 사용하여 바로로드 할 수 있습니다.

주요 문제는 메모리 사용이지만 UIImage와 같은 오류 이미지는 메모리에서 제거되지 않습니다.

업데이트 2012-9-20 :이 답변은 현재 사용되지 않습니다. Core Data no는 외부 파일에있는 이미지와 같은 많은 양의 데이터를 저장하는 자체 시스템을 가지고 있습니다.

+1

"UIImage와 같은 메모리에서 오류가있는 이미지는 삭제되지 않습니다." –

+0

그리고 내 축소판 이미지는 약 20 ~ 40kb이지만 축소판 이미지 수는 사용자에 따라 수천 가지가 될 수 있습니다. 사진을 파일에 저장해야합니까? 추신. 모든 사진이 서버에 업로드됩니다. –

관련 문제