9
Şu an için 3.0 sürümüne yükseltme yapıyorum NSCache'nin çalışması için şu anda sahip olduğum kodun altında değilim. Hiçbir şey göremiyorum Im'm Im 'yanlış ne yapıyorum emin değilim. şimdiden teşekkürlerswift 3 NSCache çalışmıyor
class myClass {
let imageCache = NSCache()
func downloadImageByUserId(userId:String,imageView:UIImageView){
print(userId)
fireBaseAPI().childRef("version_one/frontEnd/users/\(userId)").observeEventType(.Value, withBlock: {snapshot in
let imageUrl = snapshot.value!["profileImageUrl"] as! String
// check image cache
print(self.imageCache.objectForKey(imageUrl))
if let cacheImage = self.imageCache.objectForKey(imageUrl) as? UIImage{
print("image cache")
imageView.image = cacheImage
return
}
print("image not cache")
//retrieve image
let url = NSURL(string: imageUrl)
NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, resposn, error) in
if error != nil {
print(error)
return
}
dispatch_async(dispatch_get_main_queue(),{
if let downloadImage:UIImage = UIImage(data: data!){
self.imageCache.setObject(downloadImage, forKey: imageUrl)
imageView.image = downloadImage
}
})
}).resume()
})
}
}
Are: Bu hızlı
Dictionary
gibi davranır, sen
Key
veValue
Türü vermek gerekir? Yanılmıyorsam, yönteminiz her çağrıldığında 'imageCache = NSCache() 'şeklinde yeni bir * boş * önbellek yaratıyorsunuz. –@MartinR kontrol ettim ve 'imageCache = NSCache()' yönteminin dışında bıraktım. Aynı zamanda önbellek çalışması sadece NSUrlSession 'içinde olduğu zaman' nil 'haline geldiğine benziyor.' .resume 'bununla bir ilgisi olup olmadığından emin değilim. Lütfen gözden geçirilmiş soruya bakın. – pprevalon