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

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

DDGDataCache

OC版本同步發出 請移步:DDGDataCache_OC

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

image

  //構建模擬資料
   /**
   *  模擬資料請求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("?(同步)儲存/更新失敗")
       }
複製程式碼

1,非同步寫入

    寫入/更新快取(非同步) [按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("?清除快取失敗")
    }
複製程式碼

直接把程式碼拖入

    直接將DDGDataCache資料夾下的檔案拖入即可
   
複製程式碼

注意點(決定成功的關鍵)

    注意: 使用前請在'-Bridging-Header.h' 
    橋接檔案中匯入    #import<CommonCrypto/CommonCrypto.h>
    因為要用到MD5加密的東西
複製程式碼

License

DDGDataCache is available under the MIT license. See the LICENSE file for more info. 如果有問題歡迎提出,QQ:532835032 ,如果對您有幫助,希望您動動滑鼠,不吝給個star.!

instructions (備註)

鑑於還有部分童鞋還在OC上開發,本庫相同功能翻譯成OC,大家多了一個選擇,附上鍊接,希望可以幫到你:DDGDataCache_OC

相關文章