2011-02-18 3 views
0

내 tableviewcell에있는 API에서 이미지를로드하는 중, UITableView를 스크롤 할 때마다 이미지가 다운로드됩니다. 그렇다면이 이미지를 저장하는 가장 좋은 방법은 무엇이며 이미 이미지가 이미 있으면 이미지를 다시 다운로드 할 필요가 없습니까? 텍스트UITableViewCell에 이미지 저장

같은 일이, 그것은 매우 큰 아니라면 내가 텍스트 ...

답변

2

을 절약 할 수있는 방법, 당신은 한 번 다운로드 NSData 객체로 사용자 환경 (NSUserDefaults)에 저장할 수 있습니다. 나를 위해 일합니다.

또는 NSUrlConnection과 함께 비동기 요청을 사용하고 원하는 방식으로 캐싱을 구현할 수 있습니다. 예를 들어, 이미지를 일주일에 한 번만 업데이트하십시오.
또한 기본 캐시 설정이 NSUrlConnection 일지라도 충분할 수 있습니다.
More on caching

편집
비동기 요청의 예.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: url]]; 
URLConnectionDelegate *delegate = ...; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request 
                  delegate:delegate]; 

if (!connection) { 
    // something went wrong 
} 

위임자는 주로 수신 된 데이터를 처리하고 연결을 종료하는 방법이 필요합니다.
NSMutableData *receivedData 개체가 있다고 가정합니다.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [receivedData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    // success, do whatever you want with data 

    [receivedData release]; 
    [connection release]; 
} 

링크는 위 API documentation 위임 구조에 대한 자세한 정보를 제공합니다.

+0

큰 생각이 큽니까? – aherlambang

+0

@EquinoX 나는 3-5kb의 많은 심상을 저장한다. 그러나 '빅'에 관한 모든 것이 나의 추측입니다. NSUserDefaults는 큰 바이너리 객체를 보유하지 않아야한다고 가정합니다. 그리고 어떤 경우에도 파일 시스템에 이미지를 저장할 수 있습니다. –

+0

API 및 UITableView 함께, 그것은 비동기 요청을 사용하는 것이 좋습니다 ... 나는 어떻게 생각하는지 모르겠다. .. 당신은 더 많은 참조를 지적 할 수있다 .. 구글은 그 중 많은 것을 가지고 있지 않다. – aherlambang

2

iOS 사이트 샘플 코드 섹션에서 LazyTableImages 샘플 애플리케이션을 확인하십시오. NSUrlConnection 비동기 호출을 사용하여 테이블 셀의 이미지를 다운로드하고 NSMutableArray에 이미지 (및 텍스트)를 저장하는 좋은 예가 있습니다.

이 샘플 로딩과 jQuery과 표시하는 다단계 접근 방식을 보여줍니다. 먼저 테이블이 가능한 한 빨리로드 될 수 있도록 RSS 피드에서 관련 텍스트를로드 한 다음 행을 비동기 적으로 다운로드하여 UI가 더 많습니다. 이 반응합니다.