iOS檔案的高階快取– DDGDataCache_OC 快取庫的高階用法

東閣堂主發表於2019-02-27

iOS檔案的高階快取DDGDataCache_OC庫的用法

DDGDataCache

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

image
//構建模擬資料
/**
*  模擬資料請求URL
*/
let URL = "https://github.com/dudongge"

/**
*  模擬伺服器請求資料
*/
id 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: 是否寫入成功
    BOOL result = [DDGDataCache saveJsonResponseToCacheFile:self.responseObject andURL:self.URL                     path:@"appCahe" andSubPath:@""];
    if (result) {
        NSString *logStr = @"?同步寫入主目錄)儲存/更新成功";
    } else {
        NSString *logStr = @"?(同步寫入主目錄)儲存/更新失敗";
    }
複製程式碼

1,非同步寫入

    寫入/更新快取(非同步) [按APP版本號快取,不同版本APP,同一介面快取資料互不干擾]
    - parameter jsonResponse: 要寫入的資料(JSON)
    - parameter URL:          資料請求URL
    - parameter subPath:      二級資料夾路徑subPath(可設定-可不設定)
    - parameter completed:    非同步完成回撥(主執行緒回撥)

    [DDGDataCache save_asyncJsonResponseToCacheFile:self.responseObject     andURL:self.URL path:@"appCahe" andSubPath:@"MaName" completed:^(BOOL   result) {
        if (result) {
            NSString *logStr = @"?同步寫入/更新快取成功(有二級目錄)";
        } else {
            NSString *logStr = @"?(同步寫入/更新快取(有二級目錄)儲存/更新失敗";
        }
    }];
複製程式碼

2.獲取已經快取的資料

    獲取快取的物件(同步)
    - parameter URL: 資料請求URL
    - parameter subPath:      二級資料夾路徑subPath(可設定-可不設定)
    - returns: 快取物件

    id json = [DDGDataCache cacheJsonWithURL:self.URL subPath:@""];
    NSString *jsonStr = [NSString stringWithFormat:@"%@",json];
    [self updadateLog: jsonStr];
    //獲取指定快取資料
    id json = [DDGDataCache cacheJsonWithURL:self.URL subPath:@"MaName"];
    NSString *jsonStr = [NSString stringWithFormat:@"%@",json];

複製程式碼

3.獲取快取資料的大小

//獲取總的快取大小
    float size = [DDGDataCache cacheAllSize];
    [self updadateLog: [NSString stringWithFormat:@"全部快取大小:%fM",size]];
    print("快取大小(M)=(size)")
    //獲取制定路徑的快取大小(傳入二級路徑)
    float size = [DDGDataCache cacheSizeWithSubPath:@"MaName"];
    [self updadateLog: [NSString stringWithFormat:@"全部快取大小: %fM",size]];
    print("快取大小(M)=(allSize)")
複製程式碼

4,刪除快取

//清除全部快取
    BOOL result = [DDGDataCache clearAllCache];
    if(result) {
        print("?清除快取成功")
    } else {
        print("?清除快取失敗")
    }
//清除指定快取
    BOOL result = [DDGDataCache clearCacheWithSubPath:@"userInfo"];
    if (result) {
        print("?清除快取成功")
    } else {
        print("?清除快取失敗")
    }
複製程式碼

直接把程式碼拖入

直接將DDGDataCache資料夾下的檔案拖入即可

複製程式碼

License

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

instructions (備註)

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

相關文章