2009-08-28 4 views
1

"thumb1.jpg", "thumb2.jpg"등의 축소판 이미지가 채워진 두 개의 매우 단순하고 동일한 UITableView가 있습니다.이 축소판 이미지에는 원래 이미지 인 "1.jpg" 이미지 처리에 사용되는 텍스트 파일 "1.txt"가 있습니다. 모든 것은 앱의 Documents 폴더에 저장됩니다.UITableViews에 대한 데이터 관리

cellForRowAtIndexPath를 사용하여 UITableViews에서 축소판을 매우 쉽게 표시 할 수 있으므로이 파일의 번호가 매겨진 순서대로 이름을 지정하고 싶습니다. 현재 NSMutableArray (인덱스 : 1 객체 : "thumb1.jpg"등)를 사용하여 앱의 모든 이미지를 추적합니다.

사용자가 이미지를 추가/삭제할 수 있으므로 주문 유지가 중요합니다. 추가/삭제 처리를 위해 NSMutableArray에서 insertObjectAtIndex 및 removeObjectAtIndex를 사용하고 있습니다. NSMutableArray는 순서를 유지하지만 이런 경우 이미지와 텍스트 파일 이름을 프로그래밍 방식으로 변경해야합니다. 예를 들어, "0.jpg", "1.jpg", "2.jpg", "3.jpg", "4.jpg"의 배열에 5 개의 이미지가 있고 사용자가 두 번째 이미지 ("1 .jpg ") 배열은 인덱스 1에"2.jpg "를 가지므로 파일 이름은"1.jpg ","1.txt "및"thumb1.jpg "로 변경해야합니다.

이 접근 방식은 어떻게 소리가 나나요? 나는 Objective-C에 익숙하지 않으므로 다른 기능을 사용한다면 당신의 의견을 듣고 싶을 것이다.

답변

1

실제 이미지 파일의 이름을 바꾸는 것은 좋은 생각이 아닙니다.

이미지의 제목/설명을 포함하는 NSMutableArrays 2 개와 파일 이름 (또는 원하는 경우 실제 UIImage)을 보유하는 NSMutableArrays 2 개를 구현합니다. 그런 다음 인덱스 2의 항목과 같이 삭제해야하는 경우 두 배열 각각에서 동일한 객체를 삭제하면 해당 항목이 동기화 상태로 유지됩니다.

각 행마다 점점 더 많은 것들이 저장되기를 원하는 경우, 자신 만의 클래스를 구현하는 것이 좋습니다. 그런 다음 해당 클래스의 여러 인스턴스의 배열을 구현할 수 있으며 각 클래스는 image, text, thumbnail 등과 같은 속성을 갖습니다. 실제로 이미 세 개의 별도 속성 (기본 이미지, 텍스트 및 축소판) 곧바로 사용자 정의 클래스를 구현해야한다고 말하고 싶다.

이 의미가 있는지 또는 어떤 코드에서 자세히 설명하고 싶으면 알려주십시오.

+0

각 UITableView는 적어도 10 개의 이미지를 가지므로 메모리 관련 문제로 배열에 UIImages를 유지하지 못했습니다 (UITableViews는 이미 5 개의 축소판으로 각각 천천히 스크롤합니다). cellForRowAtIndexPath에서는 initWithContentsOfFile을 사용하여 각 UIImage를 만들고 UITableView를 이해하고 UITableView를 유지하고 파일에서 다시로드하지 않고 셀을 다시 사용할 때 요청했을 때 셀에 다시 삽입합니다. 내가 대신 할당/viewDidLoad 이러한 이미지를 초기화하고 NSMutableArray에 저장해야합니까? – Ian

+0

예, 제가해야한다고 말하고 싶습니다. 나는 당신이 5 개의 이미지 (나는 NSArray에 저장되어있는 수백 개의 이미지를 보여주는 UITableViews를 가지고있다.)를 경험했지만 그것이 이미지 로딩이라고 생각하는 기억 문제는 아니라고 생각한다. cellForRowAtIndexPath에있는 파일에서 각 이미지를 초기화하는 경우 셀을 다시 사용하는지 여부에 관계없이 매번 이미지를 확실히 다시로드합니다. 그런 다음 viewDidLoad에서 파일의 이미지를로드하여 훨씬 빠르게 셀 렌더링을 볼 수 있습니다. 그렇지 않은 경우 알려주십시오. – h4xxr

+0

이 접근법은 훨씬 더 잘 작동합니다! 나는 UITableView가 그것에 추가 된 모든 이미지를 유지할 것이라고 생각했지만 그것이 셀이 제거 된 후에 이미지가 멈추지 않는 셀을 다시 사용하는 것처럼 보인다. 도와 주셔서 감사합니다 h4xxr. – Ian

관련 문제