2016-06-23 4 views
-1

SOAP API를 사용하고 있으며 SQLite 데이터베이스에 저장된 XML 파일의 응답을 XML 파일에 반환합니다. 해당 XML 파일은 이미지 URL로 구성되어 있으며 다운로드 할 때 이미지를 로컬 폴더에 저장합니다. 그러나 다운로드에는 로컬 폴더에 다운로드하고 저장하는 데 많은 시간이 걸립니다. 지금 원하는 것은 속도 다운로드 로직을 로컬 폴더에 저장하는 것입니다.url에서 이미지를 빠르게 다운로드 중입니다.

if (categoryArray.count > 0) 
    NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"WordImages"]; 
    NSError *error = nil; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath]) 
     [[NSFileManager defaultManager] createDirectoryAtPath:stringPath withIntermediateDirectories:NO attributes:nil error:&error]; 
    NSString *fileName = [stringPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%lu.jpg",(unsigned long)categoryTitleArray.count]]; 
    NSString *imgUrl = [categoryArray objectAtIndex:0]; 
    imgUrl = [imgUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]; 
    [data writeToFile:fileName atomically:YES]; 
categoryArray = [[NSMutableArray alloc]init]; 
    [imageArray addObject:fileName]; 
+0

왜 당신은 캐싱 기능을 구현하려고 로컬 이미지를 저장할 수 있습니까? – AnthoPak

+0

당신의 질문이 분명하지는 않지만,이 코드는 매우 악의적입니다. [NSData dataWithContentsOfURL : [NSURL URLWithString : imgUrl]]'. 문제를 해결하기위한 배경 작업을 연구하십시오. – Desdenova

+0

어떤 경우에도 비동기 패턴을 사용하여 데이터를 다운로드하면 사용자 경험이 향상되고 스레드가 차단되지 않습니다. – vadian

답변

2

당신은이 이미지를 다운로드하여 캐시 할 sdwebimage 라이브러리를 사용할 수 있습니다

여기 내 코드입니다.

Check my Answer here

+0

예. 프로젝트에 sdwebimage 파일을 가져와야합니다. –

+0

문제가 해결되면 내 대답을 수락 할 수 있다고 생각합니다. –

+0

이미지가 캐시되므로 빠릅니다. –

관련 문제