IOS 使用Archive持久化数据

原创 2013年12月05日 15:46:11

1、持久化一个对象(该对象必须实现NSCoding协议)

主要使用 NSData类中 [ NSMutableData*  writeToFile:path atomically:YES],关键是怎么位data赋值

一下是完整的代码:

储存:

NSString* p = [self getFilePath];  //构建储存路径
    NSLog(@"%@",p);
    
    NSMutableData* data = [[NSMutableData alloc]init];  //构建空数据块(NSMutableData)
    
    NSKeyedArchiver* archiver = [[NSKeyedArchiver alloc]   initForWritingWithMutableData:data];             //创建打包器(NSKeyedArchiver) 与 空数据块(NSMutableData)关联
    
    
    YMPerson *person = [[YMPerson alloc] init];          //构建实际的数据
    person.name = [_et_name text];
    person.age = [_et_age.text intValue];
    person.gender = [_et_set text];
    
    [archiver encodeObject:person];                     //将数据打包到数据块中
    [archiver finishEncoding];
    [data writeToFile:p atomically:YES];                //数据块写到磁盘中


读取:


    NSMutableData* data = [[NSMutableData alloc] initWithContentsOfFile:[self getFilePath]];                                 //构建数据储存区块
    NSKeyedUnarchiver*unachiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];                  //构建解包器与数据区块关联
    
   YMPerson *person = [unachiver decodeObject];       //读取对象
    
    _et_set.text =person.gender;
    _et_age.text = [NSString stringWithFormat:@"%d",person.age];
    _et_name.text=person.name;
    
    NSLog(@"%@",person);

2.持久化多个对象


写入:

    NSMutableArray* array =[[NSMutableArray alloc] init];  //构建数据储存容器
    
    YMPerson* person1 = [YMPerson initWithName:@"name1" withAge:20 withGender:@"man"];
    YMPerson* person2 = [YMPerson initWithName:@"name2" withAge:22 withGender:@"manman"];
    
    [array addObject:person1];
    [array addObject:person2];  //添加实际储存的数据
    
    [NSKeyedArchiver archiveRootObject:array toFile:[self getFilePath] ];  //写入磁盘


读取:

 NSArray* persons = [NSKeyedUnarchiver unarchiveObjectWithFile:[self getFilePath]];
    
    for (YMPerson *p in persons) {
        NSLog(@"%@,%d,%@",p.name,p.age,p.gender);
    }


相关文章推荐

iOS数据持久化之属性列表和归档

  • 2015年10月28日 16:14
  • 21KB
  • 下载

iOS 本地数据持久化 中UserDefault的使用

一般来说iOS中存取本地数据又三种方式:UserDefault, 数据库(FMDB,coredata5.sqlist等),文件。 这里数一下最简单易用的UserDefault. 之所以简单易用...

ios持久化保存数据

  • 2013年09月03日 20:26
  • 83KB
  • 下载

IOS数据持久化的几种方式

  • 2017年02月08日 15:32
  • 123KB
  • 下载

iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象

基本使用:   创建一个user defaults方法有多个,最简单得快速创建方法:    NSUserDefaults *accountDefaults = [NSUserDefa...

IOS数据持久化存储之SQLite3第三方库FMDB的使用

SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3。在IOS中使用SQLite如果使...

iOS数据持久化-SQLite数据库使用详解

使用SQLite数据库 创建数据库 创建数据库过程需要3个步骤: 1、使用sqlite3_open函数打开数据库; 2、使用sqlite3_exec函数执行Create Tab...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 使用Archive持久化数据
举报原因:
原因补充:

(最多只允许输入30个字)