iOS-归档模型创建和工具类的封装
2015-10-16 08:47
411 查看
数据的存储方式有好多种 plist NSUserDefault CoreData fmdb 归档
这些方式各自有优缺点
如果我们存储数据量小的数据 可以使用归档和 NSUserDefault
今天讲解一个知识点 归档的使用
这里是为实现了一个功能 用户登录和注册
我们将信息保存起来 下次打开应用程序 直接从沙盒中读取比对判断 十分方便
这里封装了一个用户模型 和 一个工具类 大家可以拿来直接使用
代码如下:注解很详细
//处理账号所有的有关信息
存储账号 验证账号
#define QHAccountPath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"account.archive"]
#import "QHAccountTool.h"
@implementation QHAccountTool
/**
* 存储用户的账号信息
*
* @param account <#account description#>
*/
+ (void)saveAccount:(QHAccount *)account
{
//放进document
可以进行备份
//将返回的数据存进沙盒
// NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
#warning 这里的NSString
方法调用出错用的是stringByAppending 路径拼接错误
// NSString *path = [doc stringByAppendingPathComponent:@"account.archive"];
//存进沙盒
//[responseObject writeToFile:path atomically:YES];
//自定义对象的存储必须用NSKeyedArchiver
不在有什么write to file
[NSKeyedArchiver
archiveRootObject:account toFile:QHAccountPath];
}
/**
* 返回账号信息
*
* @return <#return value description#>
*/
+ (QHAccount *)account
{
//加载数据模型
QHAccount *account = [NSKeyedUnarchiver
unarchiveObjectWithFile:QHAccountPath];
return account;
}
@end
这些方式各自有优缺点
如果我们存储数据量小的数据 可以使用归档和 NSUserDefault
今天讲解一个知识点 归档的使用
这里是为实现了一个功能 用户登录和注册
我们将信息保存起来 下次打开应用程序 直接从沙盒中读取比对判断 十分方便
这里封装了一个用户模型 和 一个工具类 大家可以拿来直接使用
代码如下:注解很详细
#import <Foundation/Foundation.h> #warning 这里必须遵守协议 不然不知道对象中的哪些属性写进沙盒 @interface QHAccount : NSObject<NSCoding> //返回字段 字段类型 字段说明 /**string 登录状态 返回值1 表示登录成功 返回值0表示登录失败*/ @property (nonatomic, copy) NSString *status; /**string 记录登录状态信息:登录成功/登录失败*/ @property (nonatomic, copy) NSString *data; /**string userid 用户的id 编号唯一*/ @property (nonatomic, copy) NSString *userid; /**string mobile电话号码*/ @property(nonatomic, copy)NSString *mobile; /**string nickname昵称 用于保存用户的昵称*/ @property (nonatomic, copy) NSString *nickname; /**string 登录成功后返回token值*/ @property (nonatomic, copy)NSString * token; + (instancetype)accountWithDict:(NSDictionary *)dict; @end
#import "QHAccount.h" @implementation QHAccount + (instancetype)accountWithDict:(NSDictionary *)dict { QHAccount *account = [[self alloc]init]; account.status = dict[@"status"]; account.data = dict[@"data"]; account.userid = dict[@"userid"]; account.mobile = dict[@"mobile"]; account.nickname = dict[@"nickname"]; account.token = dict[@"token"]; return account; } /** * 当一个对象要归档到沙盒中的时候 就会调用这个方法 目的:在这个方法中说明这个对象的哪些属性要存进沙盒 */ - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.status forKey:@"status"]; [aCoder encodeObject:self.data forKey:@"data"]; [aCoder encodeObject:self.userid forKey:@"userid"]; [aCoder encodeObject:self.mobile forKey:@"mobile"]; [aCoder encodeObject:self.nickname forKey:@"nickname"]; [aCoder encodeObject:self.token forKey:@"token"]; } /** * 当从沙盒中解档一个对象(从沙盒中加载一个对象)就要调用该方法 目的:在这个方法中说明沙盒中的属性该怎么解析(需要取出哪些属性) */ - (id)initWithCoder:(NSCoder *)aDecoder { if (self = [super init]) { self.status = [aDecoder decodeObjectForKey:@"status"]; self.data = [aDecoder decodeObjectForKey:@"data"]; self.userid = [aDecoder decodeObjectForKey:@"userid"]; self.mobile = [aDecoder decodeObjectForKey:@"mobile"]; self.nickname = [aDecoder decodeObjectForKey:@"nickname"]; self.token = [aDecoder decodeObjectForKey:@"token"]; } return self; } @end
#import <Foundation/Foundation.h> #import "QHAccount.h" @interface QHAccountTool : NSObject /** * 存储用户的账号信息 * * @param account <#account description#> */ + (void)saveAccount:(QHAccount *)account; /** * 返回账号信息 * * @return <#return value description#> */ + (QHAccount *)account; @end
//处理账号所有的有关信息
存储账号 验证账号
#define QHAccountPath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"account.archive"]
#import "QHAccountTool.h"
@implementation QHAccountTool
/**
* 存储用户的账号信息
*
* @param account <#account description#>
*/
+ (void)saveAccount:(QHAccount *)account
{
//放进document
可以进行备份
//将返回的数据存进沙盒
// NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
#warning 这里的NSString
方法调用出错用的是stringByAppending 路径拼接错误
// NSString *path = [doc stringByAppendingPathComponent:@"account.archive"];
//存进沙盒
//[responseObject writeToFile:path atomically:YES];
//自定义对象的存储必须用NSKeyedArchiver
不在有什么write to file
[NSKeyedArchiver
archiveRootObject:account toFile:QHAccountPath];
}
/**
* 返回账号信息
*
* @return <#return value description#>
*/
+ (QHAccount *)account
{
//加载数据模型
QHAccount *account = [NSKeyedUnarchiver
unarchiveObjectWithFile:QHAccountPath];
return account;
}
@end
相关文章推荐
- iOS讲解迷惑之键盘弹出遮挡输入框的问题
- iOS--正则表达式
- iOS讲解迷惑之Core Data
- iOS--关于审核
- (IOS)BaiduFM 程序分析
- iOS模拟器录屏转gif神器
- Waring:Title set but using a system identifier解决办法
- 2015年最新苹果开发者账号注册流程详解
- 带你秀的飞起——三款移动端H5制作应用体验报告 iOS Android
- iOS-序列化与反序列化
- iOS 数组排序和遍历
- iOS应用之 二维码
- iOS.StaticLibrary.1-avoid-duplicate-symbol-in-static-library[draft]
- iOS 进制转换(2转10,10转16)
- ios textfield限制中文输入长度
- iOS:核心动画具体的类和协议的介绍
- iOS9 collectionView新特性
- iOS之Cocoa大招KVC键值编码
- ios学习资料
- #在蓝懿iOS学习的日子#2014年10月15日