欢迎光临
我们一直在努力

Alamofire与Cache封装实现网络缓存、下载

建站超值云服务器,限时71元/月

Alamofire与Cache封装实现网络缓存、下载

项目介绍:

  • 对Alamofire与Cache的封装实现对网络数据的缓存,可以存储JSON、String、Data,接口简单明了.
  • 封装Alamofire下载,使用更方便.
  • 如有问题,欢迎提出,不足之处,欢迎纠正,欢迎star ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
  • Github: https://github.com/MQZHot/DaisyNet

    缓存.gif

下载.gif

1. 请求+缓存

  • 缓存数据只需要调用.cache(true),不调用或者.cache(false)则不缓存

  • 调用responseCacheAndString可以先读取缓存数据,再读取网络数据

  • 通过isCacheData属性可以区分缓存数据还是网络数据

DaisyNet.request(url, params: params).cache(true).responseCacheAndJson { value in
    switch value.result {
    case .success(let json):
        if value.isCacheData {
            print("我是缓存的")
        } else {
            print("我是网络的")
        }
    case .failure(let error):
        print(error)
    }
}
  • 你也可以分别读取缓存数据和网络数据,如下代码

  • 调用cacheJson方法获取缓存数据,调用responseJson获取网络数据

DaisyNet.request(url, params: params).cache(true).cacheJson { json in
        print("我是缓存的")
    }.responseJson { response in
    print("我是网络的")
}
  • 如果你不需要缓存,可以直接调用responseJson方法

DaisyNet.request(url).responseString { response in
    switch response {
    case .success(let value): print(value)
    case .failure(let error): print(error)
    }
}
  • 同理,如果你要缓存Data或者String,与JSON是相似的

/// 先读取缓存,再读取网络数据
DaisyNet.request(url).cache(true).responseCacheAndString { value in }
DaisyNet.request(url).cache(true).responseCacheAndData { value in }
/// 分别获取缓存和网络数据
DaisyNet.request(url).cache(true).cacheString { string in
        print("我是缓存的")
    }.responseString { response in
    print("我是网络的")
}
  • 取消请求

DaisyNet.cancel(url, params: params)
  • 清除缓存

/// 清除所有缓存
func removeAllCache(completion: @escaping (Bool)->())
/// 根据url和params清除缓存
func removeObjectCache(_ url: String, params: [String: Any]? = nil, completion: @escaping (Bool)->())

2. 下载

思路:
  • 1.下载中的任务,用url作为key添加到DownloadManager单例中

  • 2.取消任务、删除任务以及下载失败时,将下载任务从单例中删除,保证- DownloadManager单例的downloadTasks中是正在下载的

  • 3.暂停下载,保存已经下载的data到plist文件

DaisyNet.download(url).downloadProgress { progress in
        /// 下载进度
    }.response { response in
    /// 下载完成
}
  • 如果正在下载中退出当前界面,再次进入时可以通过以下方法获取下载进度,并改变UI

DaisyNet.downloadProgress(url) {
        print($0)
    }?.response(completion: { _ in
    print("下载完成")
})
  • 获取下载状态

DaisyNet.downloadStatus(url)
  • 获取下载百分比

DaisyNet.downloadPercent(url)
  • 获取下载完成后文件所在位置

DDaisyNet.downloadFilePath(url)
  • 删除某个下载

DaisyNet.downloadDelete(url)
  • 取消某个下载

DaisyNet.downloadCancel(url)

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Alamofire与Cache封装实现网络缓存、下载
分享到: 更多 (0)