IOS数据持久化之NSKeyedArchiver

数据持久化一般有四张方式,上面我们说了使用NSUserDefaults进行数据持久化,下面我们总结一下使用归档的方式进行数据持久化

归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式)

使用NSKeyedArchiver进行归档、NSKeyedUnarchiver进行接档,这种方式在写入、读出数据之前对数据进行序列化、反序列化操作


一、对简单对象归档

可以使用archiveRootObject对简单对象进行归档

//归档
    NSString *homedirectory = NSHomeDirectory();
    
    self.archivefilepath = [homedirectory stringByAppendingPathComponent:@"object.archiver"];

    NSString *homepath =[homedirectory stringByAppendingPathComponent:@"my.archiver"];//扩展名可以是任意的
    //归档,可以对字符串、数字进行归档,当然了一可以对NSArray,NSDictionary进行归档,归档成功返回YES,失败返回NO
    BOOL flag = [NSKeyedArchiver archiveRootObject:@"zhangsan" toFile:homepath];
    if(flag){
        NSLog(@"数据归档成功");
    }else{
        NSLog(@"数据归档失败");
    }
    //接档
    NSString *username = [NSKeyedUnarchiver unarchiveObjectWithFile:homepath];
    NSLog(@"反归档数据:%@",username);

二、对多个对象归档

对多个对象归档同样是使用NSKeyedArchiver,但是需要在归档的时候使用encodeXXX方法进行归档,最后通过writeToFile方法写入文件


//归档,写数据
    CGPoint point = CGPointMake(10,10);
    NSString *desc =@"坐标起始点";
    NSInteger val = 10;
    NSArray *stuArray =[NSArray arrayWithObjects:@"xiaozhang",@"xiaowang",@"Sandy", nil];
    NSDictionary *stuInfoDic =[NSDictionary dictionaryWithObjectsAndKeys:@"22",@"age",@"male",@"sex", nil];
    
    NSString *multipath =[homedirectory stringByAppendingPathComponent:@"multi.archiver"];
    NSMutableData *mutabledata =[[NSMutableData alloc] init];
    NSKeyedArchiver *archiver =[[NSKeyedArchiver alloc] initFor
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值