2017-06-05 18 views
0

私はキャッシュを使用して非同期に画像をダウンロードしようとしていますが、objective-Cのtableviewcellに表示しています。画像はURLから来ています。 NSSessionを使用してAPI呼び出しを行い、GCDを使用してバックグラウンド呼び出しを行っていますが、この場合はスクロール中にイメージが再度ダウンロードされています。一度だけイメージをダウンロードしたいobjective-Cのtableviewcellにキャッシュと表示を使って画像を非同期でダウンロードする方法は?

//------------ using GCD --------- 
     if(![imageUrlString isKindOfClass:[NSNull class]]){ 

       dispatch_async(dispatch_get_global_queue(0,0), ^{ 
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrlString]]; 
        if (data == nil) 
         return; 
        dispatch_async(dispatch_get_main_queue(), ^{ 
         // WARNING: is the cell still using the same data by this point?? 
         cell.imageView.image = [UIImage imageWithData: data]; 
        }); 
       }); 
     } 
     //------------ using GCD ----- 

同じ換金方法はありますか?はい、もし私がこれを達成する方法を提案してください。

+1

を試してみてください? (https://github.com/rs/SDWebImage) – foolishBoy

答えて

0

私たちが適切なツールとライブラリを持っていれば、私たちは面倒なことはありません。この点に関してもっと時間を費やさなければならないからです。

SDWebimageは、あなたの要件を満たす優れたライブラリです。すべてのケースについて考える必要はありません。それはすでにあなたのために行われています。一例として、

imageView.sd_setImage(with: URL(string: "your domain name"), placeholderImage: UIImage(named: "placeholder.png")) 

は、あなただけのcellForRowAtIndexPathでこの行を記述する必要があります。 :) このライブラリには多くの機能もあります。 ハッピーコーディング。 SDWebImageを使用しない理由

+0

placeholderImage – sss

+0

にその授受エラーがありますかhttps://github.com/rs/SDWebImage/blob/master/Docs/HowToUse.mdを参照してください –

+0

これを提案できますかエラー - UIImageView sd_setImageWithURL:placeholderImage:]:インスタンスに送信された認識できないセレクタ – sss

0

はSDWedImage

[[SDWebImageManager sharedManager]downloadImageWithURL:[NSURL URLWithString:imageurl] options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 
    cell.imageView.image = image; // if you want resize your image and any other operation can do here. 
     }]; 

OR

+0

placeholderImage – sss

+0

での授受エラーがnilとして渡されます。プレースホルダ画像が必要ない場合。 – KKRocks

+0

エラーが発生しました----- UIImageView sd_setImageWithURL:placeholderImage:]:認識できないセレクターがインスタンスに送信されました----- [cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageUrlString] placeholderImage:nil]; --- – sss

関連する問題