第十七篇、归档缓存模型

简介:

  在很多的情况下,我们常常需要去缓存模型数据,比如一下简单的数据(个人信息等)。

注意:

  1.必须需要NSCoding协议

 

存盘示例:

.h

#import <Foundation/Foundation.h>

@interface LocalData : NSObject

+ (instancetype)read:(NSString *)name;
+ (void)save:(NSString *)name className:(id)className;

@end

 

.m

#import "LocalData.h"

@implementation LocalData

+ (instancetype)read:(NSString *)name {
//    NSData *_data = [[NSData alloc] initWithContentsOfFile:[self getFilePathWithModelKey:name]];
//    //解档辅助类
//    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:_data];
//    //解档出数据模型Student
//    //解码并解档出model
//    id model = [unarchiver decodeObjectForKey:name];
//    //关闭解档
//    [unarchiver finishDecoding];
//    return model;
    
    //获得保存数据
    NSData *getthemeAndAboutData = [[NSUserDefaults standardUserDefaults] objectForKey:name];
    //转成模型获取数据
    id model =   [NSKeyedUnarchiver unarchiveObjectWithData:getthemeAndAboutData];
    
    return model;

    
    //return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getFilePathWithModelKey:name]];
}

+ (void)save:(NSString *)name className:(id)className
{

//    BOOL success = [NSKeyedArchiver archiveRootObject:className toFile:[self getFilePathWithModelKey:name]];
//    NSLog(@"保存的状态%d",success);
    
    ///归档
//    //需要用NSMutableData来中中介
//    NSMutableData *data = [[NSMutableData alloc] init];
//    //创建归档辅助类
//    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
//    //编码
//    [archiver encodeObject:className forKey:name];
//    //结束编码
//    [archiver finishEncoding];
//    //写入
//    [data writeToFile:[self getFilePathWithModelKey:name] atomically:YES];
    
    
    NSData *themeAndAboutData = [NSKeyedArchiver archivedDataWithRootObject:className];
    [[NSUserDefaults standardUserDefaults] setObject:themeAndAboutData forKey:name];
    [[NSUserDefaults standardUserDefaults] synchronize];
    
}

//得到目录
+(NSString *) getFilePathWithModelKey:(NSString *)modelkey
{
    NSArray *array =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    return [[array objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.archiver",modelkey]];
    
}

@end

 

转载于:https://www.cnblogs.com/HJQ2016/p/5818165.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值