- 對Alamofire與Cache的封裝實現對網路資料的快取,可以儲存JSON、String、Data,介面簡單明瞭.
- 封裝Alamofire下載,使用更方便.
- 如有問題,歡迎提出,不足之處,歡迎糾正,歡迎star ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
- Github: github.com/MQZHot/Dais…
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)複製程式碼