• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

DaisyNet: 对Alamofire与Cache的封装实现对网络数据的缓存,可以存储JSON,String,Da ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

DaisyNet

开源软件地址:

https://gitee.com/mengqingzheng/DaisyNet

开源软件介绍:

DaisyNet

image

对Alamofire与Cache的封装实现对网络数据的缓存,可以存储JSON,String,Data,接口简单明了.

依赖AlamofireCache

使用

1. 网络请求

注意: 如果你的参数中带有时间戳、token等变化的参数,这些参数需要写在dynamicParams参数中,避免无法读取缓存

func request(    _ url: String,    method: HTTPMethod = .get,    params: Parameters? = nil,    dynamicParams: Parameters? = nil,    encoding: ParameterEncoding = URLEncoding.default,    headers: HTTPHeaders? = nil)    -> RequestTaskManager
  • 缓存数据只需要调用.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. 下载

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)
  • 取消所有下载
DaisyNet.downloadCancelAll()

Install

1.pod 'DaisyNet'2.pod install / pod update

Author

LICENSE

DaisyNet is released under the MIT license. See LICENSE for details.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap