DaisyNet
对 Alamofire 和 Cache 的封装实现对网络数据的缓存,可以存储 JSON,String,Data.
使用
注意: 如果您的参数中包含有变化的参数,如时间戳、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)->())安装
1.pod 'DaisyNet'
2.pod install / pod update
作者
许可证
DaisyNet是在MIT许可证下发布的。有关详细信息,请参阅许可证。
