ios数据持久化 归档 对象 等数据

原文地址:http://jingyan.baidu.com/article/6b97984d9481f61ca2b0bfd4.html

方法/步骤

  1.  

    例如:对person 对象进行归档。

    首先。person.h文件

    #import <Foundation/Foundation.h>

    @interface JPerson : NSObject <NSCoding>

    @property(nonatomic,copy)NSString *name;

    @property(nonatomic,assign)int age;

    @property(nonatomic,assign)double height;

    @end

    ios数据持久化 归档 对象 等数据
  2.  

    之后person.m 文件 声明两个方法 一个写 一个读

    #import "JPerson.h"

    @implementation JPerson

    #pragma mark 将对象归档的时候会调用(将对象写入文件前会调用)

    //在这个方法说清楚

    //哪些属性需要存储

    //怎样存储这些属性

    - (void)encodeWithCoder:(NSCoder *)encoder

    {

        //将_name属性进行编码

        [encoder encodeObject:_name forKey:@"name"];

        

        [encoder encodeInt:_age forKey:@"age"];

        

        [encoder encodeDouble:_height forKey:@"height"];

    }

    #pragma mark 当从对象中解析时 调用。

    //这个方法说清楚

    //1.哪些属性需要解析

    //2,怎样解析这些属性

    -(id)initWithCoder:(NSCoder *)decode

    {

        if (self = [super init]) {

            _name = [decode decodeObjectForKey:@"name"];

            _age = [decode decodeIntForKey:@"age"];

            _height = [decode decodeDoubleForKey:@"height"];

        }

        return self;

    }

    @end

    ios数据持久化 归档 对象 等数据
  3.  

    在  你需要读写的 .m 文件下实现

    这里 是在点击按钮的时候 实现

    - (IBAction)Write {

        JPerson *p = [[JPerson alloc]init];

        p.name = @"jin";

        p.age = 10;

        p.height = 176.0;

        //有个类 键值编码

        

        NSString *path = @"/Users/macbookair/Desktop/person.data";

        //归档

        [NSKeyedArchiver archiveRootObject:p toFile:path];

        

        

    }

    - (IBAction)read {

        

         NSString *path = @"/Users/macbookair/Desktop/person.data";

        

        //读档 (反归档)

        

        JPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

        

         NSLog(@"%@--%d---%f",p.name ,p.age ,p.height);

        

    }

    ios数据持久化 归档 对象 等数据
  4. 4

    ok 查看 输出 :

    ios数据持久化 归档 对象 等数据
原文地址:https://www.cnblogs.com/aggie/p/4554703.html