//
// Account.h
// 帐号模型
#import <Foundation/Foundation.h>
@interface Account : NSObject<NSCoding>
/**
* 用于调用access_token,接口获取授权后的access token
*/
@property(nonatomic,copy)NSString *access_token;
/**
* access_token的生命周期,单位是秒数
*/
@property(nonatomic,assign)long long expires_in;
/**
* access_token的生命周期(该参数即将废弃,开发者请使用expires_in)
*/
@property(nonatomic,assign)long long remind_in;
/**
* 当前授权用户的UID
*/
@property(nonatomic,assign)long long uid;
+ (instancetype)accountWithDict:(NSDictionary *)dict;
- (instancetype)initWithDict:(NSDictionary *)dict;
@end
//
// Account.m
#import "Account.h"
@implementation Account
+ (instancetype)accountWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
- (instancetype)initWithDict:(NSDictionary *)dict
{
if (self=[super init]) {
//模型的属性和字典的属性一样,可以用KVC
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
#pragma mark -NSCoding协议要实现的方法
/**
* 从文件中解析对象的时候调用
*/
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self=[super init]) {
self.access_token = [aDecoder decodeObjectForKey:@"access_token"];
self.remind_in = [aDecoder decodeInt64ForKey:@"remind_in"];
self.expires_in = [aDecoder decodeInt64ForKey:@"expires_in"];
self.uid = [aDecoder decodeInt64ForKey:@"uid"];
}
return self;
}
/**
* 将对象写入文件的时候调用
*/
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.access_token forKey:@"access_token"];
[aCoder encodeInt64:self.expires_in forKey:@"expires_in"];
[aCoder encodeInt64:self.remind_in forKey:@"remind_in"];
[aCoder encodeInt64:self.uid forKey:@"uid"];
}
@end
使用:
//4.先将字典转为模型
Account *acc = [Account accountWithDict:responseObject];
//5.存储模型数据(归档)
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *file = [doc stringByAppendingPathComponent:@"account.data"];
[NSKeyedArchiver archiveRootObject:acc toFile:file];