9
Tôi hiện đang nâng cấp lên nhanh chóng 3.0 Tôi không thể làm cho NSCache hoạt động dưới đây là mã mà tôi hiện đang có. Tôi không thấy bất cứ điều gì Im thiếu Im không chắc chắn chính xác những gì Im làm sai. cảm ơn bạn trướcnhanh chóng 3 NSCache không hoạt động
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()
})
}
}
Bạn có chắc chắn rằng nó đã làm việc trước khi Swift 3? Trừ khi tôi nhầm, bạn đang tạo một bộ đệm * trống * mới trong 'let imageCache = NSCache()' mỗi khi phương thức của bạn được gọi. –
@MartinR Tôi đã kiểm tra và đặt 'let imageCache = NSCache()' bên ngoài phương thức. nó cũng giống như bộ nhớ đệm làm việc chỉ khi nó là bên trong 'NSUrlSession' sau đó nó trở thành' nil' Tôi không chắc chắn nếu '.resume' có bất cứ điều gì để làm với nó. Vui lòng xem câu hỏi sửa đổi. – pprevalon