Swift 檔案快取--DDGDataCache_Swift庫高階封裝用法

東閣堂主發表於2018-05-29

寫在前面

或許有這樣的需求,要求頁面在無網狀態先顯示上一次顯示的資料,這就涉及到快取,但是快取又分為檔案快取,歸檔等,realm 太過笨重,歸檔太麻煩,最後選擇了檔案快取,
看了很多部落格,在參考了別人的快取開源專案,
功能太過簡單單一化,比如:我想刪除某一個檔案下的快取資訊,大部分是隻提供了刪除所有快取
,不可以按目錄刪除。我總結了一個庫,可以非同步按照目錄刪除
。簡單方便,快捷神速,是居家iOS碼農必備之利器,具體功能模組如下。
複製程式碼

image

具體用法

現已經將此程式碼上傳到github上,有具體需要的可以移步github,下載完整程式碼。
複製程式碼

移步:DDGDataCache_Swift

//構建模擬資料
    /**
     *  模擬資料請求URL
     */
    let URLString = "https://github.com/dudongge"
    let URLString1 = "https://github.com/dudongge/DDGScreenShot"
    let URLString2 = "https://github.com/dudongge/DDGMeiTuan"
    let URLString3 = "https://github.com/dudongge/DGKVO"
    
    /**
     *  模擬伺服器請求資料
     */
    let responseObject = [ "sex" : "男",
                           "city" : "上海",
                           "logintime" : "1445267749",
                           "name" : "東閣堂主",
                           "group" : "3",
                           "loginhit" : "4",
                           "id" : "234328",
                           "QQ" : "532835032" ]
    
1,//同步寫入(只有主目錄) 
/**
     寫入/更新快取(同步) [按APP版本號快取,不同版本APP,同一介面快取資料互不干擾]
     - parameter jsonResponse: 要寫入的資料(JSON)
     - parameter URL:          資料請求URL
     - parameter path:         一級資料夾路徑path(必須設定)
     - parameter subPath:      二級資料夾路徑subPath(可設定-可不設定)
     - returns: 是否寫入成功
     */
    if DDGDataCache.saveJsonResponseToCacheFile(self.responseObject as AnyObject,
                                                        URL: self.URLString,
                                                        path: "appCache") {
                print("?(同步)儲存/更新成功")
        } else {
                print("?(同步)儲存/更新失敗")
        }
 /**
     寫入/更新快取(非同步) [按APP版本號快取,不同版本APP,同一介面快取資料互不干擾]
     - parameter jsonResponse: 要寫入的資料(JSON)
     - parameter URL:          資料請求URL
     - parameter subPath:      二級資料夾路徑subPath(可設定-可不設定)
     - parameter completed:    非同步完成回撥(主執行緒回撥)
     */
     DDGDataCache.save_asyncJsonResponseToCacheFile(self.responseObject as AnyObject,
                                                           URL: self.URLString3,
                                                           path: "appCache",
                                                           subPath: "userInfo") { (succ) in
             if  succ {
                print("?(非同步)儲存/更新成功")
                 } else {
                print("?(非同步)儲存/更新失敗")
             }
    }
複製程式碼
2.獲取已經快取的資料
 /**
     獲取快取的物件(同步)
     - parameter URL: 資料請求URL
     - parameter subPath:      二級資料夾路徑subPath(可設定-可不設定)
     - returns: 快取物件
     */
     if let json = DDGDataCache.cacheJsonWithURL(URLString)  {
            print(json)
      }
      //獲取指定快取資料
      if let json = DDGDataCache.cacheJsonWithURL(URLString,subPath: "userInfo")  {
           print(json)
     }
複製程式碼
3.獲取快取資料的大小
   //獲取總的快取大小
   let allSize =  DDGDataCache.cacheAllSize()
   let size =  String(format: "%.6f", allSize)
   print("快取大小(M)=\(size)")
   //獲取制定路徑的快取大小(傳入二級路徑)
    let allSize =  DDGDataCache.cacheSizeWithUrl("userInfo")
    print("快取大小(M)=\(allSize)")
複製程式碼
4,刪除快取
    //清除全部快取
    if DDGDataCache.clearAllCache() {
            print("?清除快取成功")
        } else {
            print("?清除快取失敗")
    }
    //清除指定快取
    if DDGDataCache.clearCacheWithUrl("userInfo") {
            print("?清除快取成功")
        } else {
             print("?清除快取失敗")
    }
複製程式碼

相關文章