代碼以下: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