代码之家  ›  专栏  ›  技术社区  ›  coinhndp

翠鸟加载缓存镜像

  •  0
  • coinhndp  · 技术社区  · 7 年前

    我的API返回两种类型的照片:小照片和大照片

    if hasCacheSmallPhoto {
      imageView.kf.setImage(with: bigImageUrl, placeholder: cacheImage)
    } else {
      imageView.kf.setImage(with: bigImageUrl, placeholder: defaultPlaceHolderImage)
    }
    

    我怎样才能用翠鸟正确地实现这一点呢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Bhavesh.iosDev    7 年前

    您需要先检查小图像是否由翠鸟缓存缓存。

        if ImageCache.default.isCached(forKey:smallImageUrl) {
    
         ImageCache.default.retrieveImage(forKey: smallImageUrl) { result in
        switch result {
        case .success(let value):
    
           imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)
    
        case .failure(let error):
            print(error)
        }
    }   
    }
    else {
         imageView.image = defaultPlaceHolderImage
         imageView.kf.setImage(with: smallImageUrl) { result in
        // `result` is either a `.success(RetrieveImageResult)` or a `.failure(KingfisherError)`
        switch result {
        case .success(let value):
            // The image was set to image view:
            imageView.kf.setImage(with: bigImageUrl, placeholder: value.image)
    
    
            // The source object which contains information like `url`.
            print(value.source)
    
        case .failure(let error):
            print(error) // The error happens
        }
    }
    }
    
    推荐文章