iOS 数据储存--归档

Posted 徐家汇123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 数据储存--归档相关的知识,希望对你有一定的参考价值。

四种数据持久化方式 http://www.cocoachina.com/ios/20160617/16739.html 

//先把数据在model中归解档

。h

技术分享
@property(nonatomic,copy)NSString *email;
@property(nonatomic,copy)NSString *uid;
@property(nonatomic,copy)NSString *mobile;
@property(nonatomic,copy)NSString *vip;
@property(nonatomic,copy)NSString *regtime;
@property(nonatomic,copy)NSString *is_sec_pwd;
技术分享

 

*is_sec_pwd;

。m

技术分享
#import "UserModel.h"
static UserModel *model;
@implementation UserModel
+(UserModel *)defaultCellModel{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!model) {
            model = [[UserModel alloc]init];
        }
    });
    return model;
}
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.account forKey:@"account"];
    [aCoder encodeObject:self.regmobile forKey:@"regmobile"];
    [aCoder encodeObject:self.sec1_question forKey:@"sec1_question"];
    [aCoder encodeObject:self.headimage forKey:@"headimage"];
    [aCoder encodeObject:self.expert_audit forKey:@"expert_audit"];
  
    
}

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
    self = [super init];
    
    if(self)
        
    {
        
        self.account = [aDecoder decodeObjectForKey:@"account"];
        
        self.regmobile = [aDecoder decodeObjectForKey:@"regmobile"];
        self.sec1_question = [aDecoder decodeObjectForKey:@"sec1_question"];
        self.headimage = [aDecoder decodeObjectForKey:@"headimage"];
   
        
    }
    
    return self;

}

@end
技术分享

 

//

NSUserDefaults

 保存

Model数据-》归档-》NSUserdefaults 

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

//不能直接存取NSObject,需要先归档转成NSData

NSData  *data  = [NSKeyedArchiver archivedDataWithRootObject:model];             

 [defaults setObject:data forKey:@"model"];

NSUserdefaults-》解档-》Model数据

NSData *modeldata = [[NSUserDefaults standardUserDefaults]objectForKey:@"model"];

 usermodel = [NSKeyedUnarchiver unarchiveObjectWithData:modeldata];

 

 

 

//文件中保存

#import "ViewController.h"
#import "linePesist.h"
//导入数据模型类
#define CodeString  @"CodeString"
@implementation ViewController
-(NSString *)dataFile{
NSArray *ar = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *fielpath = [ar objectAtIndex:0];
return [fielpath stringByAppendingPathComponent:@"data.archive"];
//改修后缀名,以免与属性列表创建的文件重复,而加载成旧的的文件。 不用查字典了。。archive表归档
}
- (void)viewDidLoad {
[super viewDidLoad];
NSString *filepath = [self dataFile];
NSLog(@"%@",filepath);
if([[NSFileManager defaultManager]fileExistsAtPath:filepath]) {
//创建2个实例
NSData *data = [[NSData alloc]initWithContentsOfFile:filepath]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
//把已归档的对象读取。赋值给linepesist
linePesist *linepesist =[unarchiver decodeObjectForKey:CodeString]; [unarchiver finishDecoding];
//完成解档
for(int i = 0;i

以上是关于iOS 数据储存--归档的主要内容,如果未能解决你的问题,请参考以下文章

iOS数据持久化存储之归档NSKeyedArchiver

归档 浅析

iOS 归档的记录

iOS archive(归档)的总结

数据储存

扭曲的 I/O 归档文件