用户账号的归档和反归档(示例代码说明)

这篇博客介绍了如何实现用户账号的归档和反归档操作,通过创建一个实现了NSCoding协议的HWAccount模型,并提供了详细的代码示例。在AppDelegate中,使用NSKeyedUnarchiver进行反归档,然后将响应数据转换为模型并用NSKeyedArchiver进行归档存储到沙盒。此外,还提到了可以使用MJExtension库来简化这一过程,或者封装成工具类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于用户账号的归档和反归档的问题,现以代码示例如下:

1.首先创建一个用户账号的Model(以下创建为HWAccont)

HWAccount.H

@interface HWAccount : NSObject <NSCoding>

/** string 用于调用access_token,接口获取授权后的access token*/

@property (nonatomic, copy) NSString *access_token;


/** string access_token的生命周期,单位是秒数。*/

@property (nonatomic, copy) NSNumber *expires_in;


/** string 当前授权用户的UID*/

@property (nonatomic, copy) NSString *uid;


+ (instancetype)accountWithDict:(NSDictionary *)dict;


记得遵守NSCoding协议!!

HWAccount.m

+ (instancetype)accountWithDict:(NSDictionary *)dict

{

    HWAccount *account = [[self alloc] init];

    account.access_token = dict[@"access_token"];

    account.uid = dict[@"uid"];

    account.expires_in = dict[@"expires_in"];

    return account;

}


/**

 *  当一个对象要归档进沙盒中时,就会调用这个方法

 *  目的:在这个方法中说明这个对象的哪些属性要存进沙盒

 */

- (void)encodeWithCoder:(NSCoder *)encoder

{

    [encoder encodeObject:self.access_token forKey:@"access_token"];

    [encoder encodeObject:self.expires_in forKey:@"expires_in"];

    [encoder encodeObject:self.uid forKey:@"uid"];

}


/**

 *  当从沙盒中解档一个对象时(从沙盒中加载一个对象时),就会调用这个方法

 *  目的:在这个方法中说明沙盒中的属性该怎么解析(需要取出哪些属性)

 */

- (id)initWithCoder:(NSCoder *)decoder

{

    if (self = [super init]) {

        self.access_token = [decoder decodeObjectForKey:@"access_token"];

        self.expires_in = [decoder decodeObjectForKey:@"expires_in"];

        self.uid = [decoder decodeObjectForKey:@"uid"];

    }

    return self;

}


2.在appdelegate 的didFinishLaunchingWithOptions方法里

//    // 沙盒路径

    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSString *path = [doc stringByAppendingPathComponent:@"account.archive"];

    HWAccount *account = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

 

3.在登录界面的网络请求里

  // 将返回的账号字典数据 --> 模型,存进沙盒

    HWAccount *account = [HWAccount accountWithDict:responseObject];

  // 自定义对象的存储必须用NSKeyedArchiver,不再有什么writeToFile方法

    [NSKeyedArchiver archiveRootObject:account toFile:path];


其实,关于归档和反归档的方法,MJExtension做了很好的处理,可以使用。 我们也可以将存储账号信息封装成一个工具类,看自己喜好。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值