swiftでSDWebImageを使って画像をキャッシュする方法をメモ

swiftでSDWebImageを使って画像をキャッシュする方法をメモ。
SDWebImageをswiftで使う方法は、こちらを参考に。

簡単に書いてメモっとくと、githubとかでSDWebImageのソースをダウンロードしてきて、プロジェクトにコピーして、swiftでobject-c使うためのBridding-header.h に
#import "UIImageView+WebCache.h"
を追加する。

SDWebImageDownloader.sharedDownloaderだと、キャッシュはされないでダウンロードだけされるらしい。
キャッシュを別のやつで実装するときなどは、こっちを使うと良いかも。

completed のところはバグがあるらしい。
https://github.com/rs/SDWebImage/issues/833

一応キャッシュも出来たので、下記の方法で大丈夫かと。

class ViewController: UIViewController {

@IBOutlet weak var sampleImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

}

override func viewWillAppear(animated: Bool) {
println("viewWillAppear")
let url = NSURL(string: "http://test.com/image.png")

// SDWebImageDownloader.sharedDownloader().downloadImageWithURL(url,
// options: nil,
// progress: nil,
// completed: {[weak self] (image, data, error, finished) in
// if let wSelf = self {
// wSelf.sampleImage.image = image
// }
// })

SDWebImageManager.sharedManager().downloadImageWithURL(url,
options: SDWebImageOptions.CacheMemoryOnly,
progress: nil,
completed: { [weak self] (image, error, a, c, s) in
if let wSelf = self {
wSelf.sampleImage.image = image
}
})
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func unwindToTop(segue: UIStoryboardSegue) {
}
}


これでキャッシュされる。


参考サイト
Crash in swift, when I use self.xxxx in the completed block #833
【Swift】SDWebimageのcompletionバグ対応
SwiftでSDWebImageを使いたい
【iOS】SDWebImageでアプリ容量がどんどん増えていく件
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret


プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事