015-從網絡上緩存圖片

1、從網絡上緩存圖片

/// 緩存單張圖片
    ///
    /// - Parameters:
    ///   - list: 模型
    ///   - finished: 刷新數據回調
    private func cacheSingleImage(list: [RevanstatusModel], finished: @escaping (_ isSuccess: Bool, _ shouldRefresh: Bool)->()) {
        
        /// 0.創建調度組
        let group = DispatchGroup()
        /// 記錄下載圖片大小
        var length = 0
        
        //遍歷數組,查找微博數據中有單張圖片的,進行緩存
        for vm in list {
            
            
            /// 1.判斷圖像數量
            if vm.picURLs?.count != 1 {
                continue
            }
            
            /// 2.代碼執行到這里,數組中有且只有一張圖片
            guard let pic = vm.picURLs?[0].thumbnail_pic,let url = URL(string: pic) else {
                continue
            }
            
            print("要緩存的 URL 是\(url)")
            // A> 入組
            group.enter()
            
            // 3> 下載圖像
            // 1.downloadImage 是 SDWebImage 的核心方法
            // 2.圖像下載完成之后,會自動保存在沙盒中,文件路徑是 URL 的 md5
            // 3.如果沙盒中已經存在緩存的圖像,后續使用 SD 通過 URL 加載圖像,都會加載本地沙盒地圖像
            // 4.不會發起網絡請求,同時,回調方法同樣會調用
            // 5.方法還是同樣的方法,調用還是同樣的調用,不過內部不會再次發起網絡請求
            //***** 注意點:如果要緩存的圖像累計太大,要找后臺要接口
            SDWebImageManager.shared().downloadImage(with: url, options: [], progress: nil, completed: { (image, _, _, _, _) in
                /// 將圖像轉換成二進制數據
                if let image = image, let data = UIImagePNGRepresentation(image) {
                    // NSData 是 length 屬性
                    length += data.count
                    print("緩存圖像是\(image) 長度 \(length)")
                    /// 更新單張圖像的尺寸
                    vm.updateSingleImageSize(image: image)
                    
                    // B>出組 - 放在回調的最后一句
                    group.leave()
                }
            })
        }
        
        // C> 監聽調度組情況
        group.notify(queue: DispatchQueue.main) { 
            print("圖像緩存完成\(length / 1024)K")
            
            ///目的:在緩存單張圖片成功之后,在進行刷新表格
            finished(true, true)
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容