2016-06-23 11 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

これらの画像をキャッシュするので高速になります。 –

関連する問題