2016-06-21 3 views
2

私はKingfisherフレームワークを使用して画像をプリフェッチしています。キングフィッシャーフレームワークへのリンクは次のとおりです。プリフェッチ後にキャッシュから画像を取り出す

func downloadImages() { 
    if(self.albumImagePathArray.isEmpty == false) { 
     //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
      let urls = self.albumImagePathArray.map { NSURL(string: $0)! } 
      let prefetcher = ImagePrefetcher(urls: urls, optionsInfo: nil, progressBlock: nil, completionHandler: { 
       (skippedResources, failedResources, completedResources) ->() in 
       print("These resources are prefetched: \(completedResources)") 
      }) 
     prefetcher.start() 
    } 
} 

私はアプリケーション開発に非常に新たなんだと、このフレームワークを使用するかどうかはわかりません:https://github.com/onevcat/Kingfisher

は、ここで私が書いた私のコードです。イメージをプリフェッチしたら、キャッシュからこれらのプリフェッチされたイメージを取得するにはどうすればいいですか?私はキャッシュからこれらの画像を選び、それらをUIImageの配列に入れたいと思います。以前はキャッシュから取り出されていませんでしたが、毎回URLをロードしていて、albumImagePathArrayという文字列を配列し、contentsOfURLを使ってUIImageに変換していましたので、次のコードに示すようにalbumImagesに入れます:

var albumImages = [UIImage]() 
for i in 0 ..< self.albumImagePathArray.count 
{ 
    let image = UIImage(data: NSData(contentsOfURL: NSURL(string: self.albumImagePathArray[i])!)!) 
    self.albumImages.append(image!) 
} 

これをすべて変更したいので、プリフェッチ後にキャッシュから直接取り出したいので、時間がかかるたびにイメージをダウンロードする必要はありません。誰でもこのことを教えてくれますか?どうもありがとう!

+0

誰も私にこの助けてください! – laser2302

答えて

2

私はiOS Devでも新しく、キングフィッシャーを使用して画像をキャッシュに保存しています。

画像を先読みしている間に入るには、optionInfoがあります。この画像はnilのままです。だから、私はあなたがURLから画像を先読みすると思いますので、このoptionInfoでは、各画像にキャッシュ識別子を設定することができます。画像のURLを置くと最適です。

カワセミのドキュメントを使用すると、キャッシュに保存することができ、この慣行だからあなたがこの

func downloadImages() { 

    if(self.albumImagePathArray.isEmpty == false) { 
     let myCache = ImageCache(name: "the url of the images") 
//dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
      let urls = self.albumImagePathArray.map { NSURL(string: $0)! } 
      let prefetcher = ImagePrefetcher(urls: urls, optionsInfo: [.TargetCache(myCache)], progressBlock: nil, completionHandler: { 
       (skippedResources, failedResources, completedResources) ->() in 
       print("These resources are prefetched: \(completedResources)") 
      }) 
     prefetcher.start() 
    } 
} 

にあなたの機能を変更することができoptionInfoについてかなり明確です。続行するには、プリフェッチ後に試したことを私たちに示す必要があります。

関連する問題