如何在没有互联网连接的情况下快速缓存图像?

时间:2018-09-17 13:06:53

标签: swift firebase cocoa-touch core-data firebase-storage

我可以提取图像并在用户连接到互联网时将其缓存。但是如何离线缓存图像(当用户没有互联网连接时,尝试打开应用程序)。下面是我的代码

func downloadImages(){
        let storage = Storage.storage().reference()



        for i in animated_images{
            let storageRef = storage.child("images/\(i).jpg")
            storageRef.downloadURL { (url, error) in
                if let error = error{
                    print(error.localizedDescription)
                }
                else{
                    self.downloaded_images.updateValue(url!, forKey: i)
                    self.tableView.reloadData()
                }
            }
        }

    }

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! demoCell
        cell.textDemo.text = images[indexPath.row]

        var image1 = downloaded_images[images[indexPath.row]]
        var image2 = downloaded_images[images[indexPath.row]+"1"]

        var value1 = SDImageCache.shared().imageFromCache(forKey: image1?.absoluteString)
        var value2 = SDImageCache.shared().imageFromCache(forKey: image2?.absoluteString)

        if let downloadURL1 = value1, let downloadURL2 = value2{
            cell.imageDemo.animationImages = [downloadURL1,downloadURL2]
            cell.imageDemo.animationDuration = 2
            cell.imageDemo.startAnimating()
        }
        else{
            cell.imageDemo.sd_setAnimationImages(with: [image1!,image2!])
            cell.imageDemo.animationDuration = 2
            cell.imageDemo.startAnimating()
        }

        return cell
    }

我是iOS开发的新手,并且对Coredata和sqlite有所了解。请指导我如何在没有互联网连接的情况下进行操作。预先感谢

1 个答案:

答案 0 :(得分:0)

为了在没有Internet连接的情况下在我的应用程序中显示图像,我创建了一个名为cached_image的表,其中包含image_name和download_url字段,并保存了图像的相应URL。应用加载后,将从本地sqlite数据库获取的cached_images详细信息并显示图像