iOS 歸檔緩存

代碼以下:git

  • 頭文件定義
// 歸檔緩存內容
+ (void)archiverObject:(id)object byKey:(NSString *)key withPath:(NSString *)path;
// 解歸檔緩存內容
+ (id)unarchiverObjectByKey:(NSString *)key withPath:(NSString *)path;
複製代碼
  • 方法實現
+ (void)archiverObject:(id)object byKey:(NSString *)key withPath:(NSString *)path{
    //初始化存儲對象信息的data
    NSMutableData *data = [NSMutableData data];
    //建立歸檔工具對象
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    //開始歸檔
    [archiver encodeObject:object forKey:key];
    //結束歸檔
    [archiver finishEncoding];
    //寫入本地地址
    NSString *resultStr = [self destPath:path];
    [data writeToFile:resultStr atomically:YES];
}

+ (NSString *)destPath:(NSString *)path{
    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
    NSString *destPath = [[docPath stringByAppendingPathComponent:@"Caches"] stringByAppendingPathComponent:path];
    NSLog(@"%@", destPath);
    return destPath;
}

+ (id)unarchiverObjectByKey:(NSString *)key withPath:(NSString *)path{
    NSString *resultStr = [self destPath:path];
    NSData *data = [NSData dataWithContentsOfFile:resultStr];
    //建立反歸檔對象
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    //接收反歸檔獲得的對象
    id object = [unarchiver decodeObjectForKey:key];
    return object;
}
複製代碼
  • 使用實例
NSDictionary *dict = @{@"1":@"ding", @"2":@"guan", @"3":@"xiong"};
[TestObj archiverObject:dict byKey:@"cache" withPath:@"cache.plist"];

NSDictionary *result = [TestObj unarchiverObjectByKey:@"cache" withPath:@"cache.plist"];
NSLog(@"***::%@", result);
複製代碼

附:個人博客地址github

相關文章
相關標籤/搜索