iOS 文档归档(2)自定义归档

/*
 数据持久化是通过文件将数据存储在磁盘上
 四中数据持久化方式:
 1.属性列表(Property List)
 2.对象归档
 3.SQLite
 4.CoreDate
 
 对比:
 1.属性列表、对象归档适合小数据量存储和查询操作
 2.SQLite、CoreDate适合大数据量存储和查询操作
 
 对象归档:
 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径
 读取文件的内容(也称为接档,反序列化)。
 (对象归档的文件是保密的,在磁盘上无法查看文件中的内容,而属性列表是明文的,可以查看)
 对象归档有两种方式:1:对foundation中对象进行归档  2:自定义对象归档
 
 */
/*
 自定义内容归档
 归档:
 使用NSData实例作为归档的存储数据
 添加归档的内容---使用键值对
 完成归档
 解归档:
 从磁盘读取文件,生成NSData实例
 根据NSData实例和初始化解归档实例
 解归档,根据key访问value
 */


#import <UIKit/UIKit.h>

@interface MainViewController : UIViewController

@end

MainViewController.m

#import "MainViewController.h"

@interface MainViewController ()

@end

@implementation MainViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    //获取根目录
    NSString *homeDirectory=NSHomeDirectory();
    NSString *path=[homeDirectory stringByAppendingFormat:@"test.archiver"];
    NSMutableData *data=[[NSMutableData alloc]init];
    NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
    [archiver encodeFloat:10086 forKey:@"TEL"];
    [archiver encodeObject:@"Tome" forKey:@"name"];
    [archiver finishEncoding];//结束添加对象到data
    [archiver release];
    [data writeToFile:path atomically:YES];//将data写到文件中保存在磁盘上
    
    //读取数据
    NSData *contentData=[NSData dataWithContentsOfFile:path];
    NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:contentData];
    float tel=[unarchiver decodeFloatForKey:@"TEL"];
    NSString  *name=[unarchiver decodeObjectForKey:@"name"];
    NSLog(@"float:%f,name:%@",tel,name);
    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值