iOS 數據緩存

如何利用Xcode查看真機歸檔的數據

  • 第一步,在Xcode的window目錄下,選擇Devices,以下圖

圖片

  • 第二步, 點擊Devices,截圖以下

圖片

  • 第三步, 選擇本身的那個APP

圖片

  • 第四步, 操做以下圖

圖片

  • 第五步, 按照圖中選中操做便可

圖片

  • 第六步, 下載下來的緩存數據

輸入圖片說明

  • 第七步,右擊,單擊顯示包內容

輸入圖片說明

  • 第八步,包中顯示的內容

輸入圖片說明

  • 第九步, 找到咱們緩存的模型數據庫

輸入圖片說明

  • 第十步,用相應的數據庫打開

輸入圖片說明

模擬器與真機的緩存路徑

  • 一   模擬器緩存路徑
NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:[NSString stringWithFormat:@"%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
   BOOL ret = [NSKeyedArchiver archiveRootObject:modelArray toFile:file];
   if (ret) {
       YS_DBG(@"模擬器上-----TACityModel模型數據歸檔成功");
   }else{
       YS_DBG(@"模擬器上-----TACityModel模型數據歸檔失敗");
   }
  • 二   真機緩存路徑
NSString *Path = NSHomeDirectory();
    //注意,在真機歸檔時,請在拼接路徑時加上Documents/,指定寫入到Documents文件夾下,不然提示歸檔失敗
    NSString *totalPath=[Path stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    BOOL ret = [NSKeyedArchiver archiveRootObject:modelArray toFile:totalPath];
    if (ret) {
        YS_DBG(@"真機上-----TACityModel模型數據歸檔成功");
    }else{
        YS_DBG(@"真機上-----TACityModel模型數據歸檔失敗");
    }
  • 三 爲了方便真機和模擬器均可以使用,能夠使用以下的宏
#if TARGET_IPHONE_SIMULATOR
    
  
#elif TARGET_OS_IPHONE
    

#endif
  • 四 綜合以上四點,寫成一個歸檔的方法
#pragma mark -  根據指定的key,歸檔指定的模型數組

+ (void)archiveOTAContryModelArray:(NSMutableArray *)modelArray key:(NSString *)key
{
#if TARGET_IPHONE_SIMULATOR
    
    NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:[NSString stringWithFormat:@"%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    BOOL ret = [NSKeyedArchiver archiveRootObject:modelArray toFile:file];
    if (ret) {
        YS_DBG(@"模擬器上-----TACityModel模型數據歸檔成功");
    }else{
        YS_DBG(@"模擬器上-----TACityModel模型數據歸檔失敗");
    }

#elif TARGET_OS_IPHONE
    
    NSString *Path = NSHomeDirectory();
    //注意,在真機歸檔時,請在拼接路徑時加上Documents/,指定寫入到Documents文件夾下,不然提示歸檔失敗
    NSString *totalPath=[Path stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    BOOL ret = [NSKeyedArchiver archiveRootObject:modelArray toFile:totalPath];
    if (ret) {
        YS_DBG(@"真機上-----TACityModel模型數據歸檔成功");
    }else{
        YS_DBG(@"真機上-----TACityModel模型數據歸檔失敗");
    }
#endif
}

截圖以下數據庫

輸入圖片說明

  • 五 既然有了歸檔的方法,那確定有解歸檔的方法,以下
#pragma mark -  根據指定的key,解歸檔指定的模型數組

+ (NSMutableArray *)unArchiveOTAContryModelArrayWithkey:(NSString *)key
{
#if TARGET_IPHONE_SIMULATOR
    
    NSString *file        = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:[NSString stringWithFormat:@"%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
    return array;
    
#elif TARGET_OS_IPHONE

    NSString *Path        = NSHomeDirectory();
    //注意,在真機歸檔時,請在拼接路徑時加上Documents/,指定寫入到Documents文件夾下,不然提示歸檔失敗
    NSString *totalPath=[Path stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:totalPath];
    return array;
#endif
}

截圖以下數組

輸入圖片說明

  • 六 歸檔和解歸檔的方法都有了,那麼確定還會有刪除這個模型數據庫的方法
#pragma mark -  根據指定的key,刪除指定的模型數組
+ (void)deleteOTAContryModelArrayWithkey:(NSString *)key
{
#if TARGET_IPHONE_SIMULATOR
    
    NSString *file        = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:[NSString stringWithFormat:@"%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    [MessageUtil_ deleteFileWithPath:file];
    
#elif TARGET_OS_IPHONE
    
    NSString *Path = NSHomeDirectory();
    //注意,在真機歸檔時,請在拼接路徑時加上Documents/,指定寫入到Documents文件夾下,不然提示歸檔失敗(模擬器上路徑前面不須要Documents/,真機纔要)
    NSString *totalPath=[Path stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%zi%@.db",[PassFeedAppDelegate sharedInstance].authenticatedMember.uid,key]];
    [MessageUtil_ deleteFileWithPath:totalPath];
#endif
}

截圖以下緩存

輸入圖片說明

  • 七 好了,早下班了,今天的問題也都解決了,該回家囉!歡迎大批評指正!再見!
相關文章
相關標籤/搜索