您的位置:首页 > 编程语言

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

2016-01-21 16:57 393 查看
关于用户账号的归档和反归档的问题,现以代码示例如下:

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做了很好的处理,可以使用。 我们也可以将存储账号信息封装成一个工具类,看自己喜好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息