对自定义类型的对象进行本地化保存,那么该类型必须实现NSCoding协议!

NSCoding 协议中只有两个方法,都是require的方法,一个是把本身的类型进行编码,一个是解码成类对象,返回一个对象。

-(void)encodeWithCoder:(NSCoder*)encoder

-(id)initWithCoder:(NSCoder *)decoder

NSKeyedArchiver是一个带键的归档器,可以将一个id对象序列化到文件中,常用于归档自定义类型对象;

常用方法:

+(BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;

自定义的类 要实现

.h

@interface Grade : NSObject<NSCoding>

.m

#pragma mark - 在归档时自动调用的编码方法
-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:self.userName forKey:@"UserName"];
    [aCoder encodeInt:self.score forKey:@"Score"];
}
#pragma mark - 在归档时自动调用的编码方法
-(id)initWithCoder:(NSCoder *)aDecoder
{
    self=[super init];
    if(self){
        self.userName=[aDecoder decodeObjectForKey:@"UserName"];;
        self.score=[aDecoder decodeIntForKey:@"Score"];
    }
    return self;
}

解归档

NSKeyedUnarchiver 反序列化

+(id)unarchiveObjectWithFile:(NSString *)path;

Grade *g1=[[Grade alloc]initWithUserName:@"xiaowang" andScore:100];
    Grade *g2 = [[Grade alloc]initWithUserName:@"xiaoli" andScore:200];
    Grade *g3=[[Grade alloc]initWithUserName:@"zhangsan" andScore:210];
    NSMutableArray *rankList=[NSMutableArray array];
    [rankList addObject:g1];
    [rankList addObject:g2];
    [rankList addObject:g3];

// 序列化
    BOOL flag=[NSKeyedArchiver archiveRootObject:rankList toFile:@"rankList.plist"];   
   // 反序列化

NSMutableArray *readRandkList=[NSKeyedUnarchiver unarchiveObjectWithFile:@"rankList.plist"];

Object-C-自定义类型归档的更多相关文章

  1. Object类型转换成自定义类型(向下转型)

    Object类型转换成自定义类型 场景: 从数据库或者别的途径接收对象的时候用Object,但是用的时候怎么object点(方法提示 | alt+'/'),都点不出自定义类型的方法. 比如,数据库查询 ...

  2. 《精通C#》自定义类型转化-扩展方法-匿名类型-指针类型(11.3-11.6)

    1.类型转化在C#中有很多,常用的是int类型转string等,这些都有微软给我们定义好的,我们需要的时候直接调用就是了,这是值类型中的转化,有时候我们还会需要类类型(包括结构struct)的转化,还 ...

  3. Struts2框架的自定义类型转换器

    前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...

  4. iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

    1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...

  5. sruts2 自定义类型转换器

    1.1.1    Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP ...

  6. 一个关于自定义类型作为HashMap的key的问题

    在之前的项目需要用到以自定义类型作为HashMap的key,遇到一个问题:如果修改了已经存储在HashMap中的实例,会发生什么情况呢?用一段代码来试验: import java.util.HashM ...

  7. Struts2之自定义类型转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...

  8. [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 自定义类型转换器converter

    作用:目前将日期转换成string,将string转换成我想要的类型   0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时  表单数据以字符串的形式提交 ...

  10. 用SQLData读写数据库自定义类型

    如何读写自定义类型?SQLData是个很直观的解决办法 在oracle使用手册上找到了很好的资料 点击打开链接 http://docs.oracle.com/cd/B10501_01/java.920 ...

随机推荐

  1. SearchContextMissingException[No search context found for id [1545782]]

    这个原因是scroll的时间设置不够久,设久一些就可以了.

  2. idea设置文件的编码格式为utf-8

    file ---> settings... 然后 editor --->  file encoding 然后设置path和encoding什么的.

  3. linux里source、sh、bash、./有什么区别(转)

    add by zhj: 主要不同是,source是在当前shell中执行脚本,而sh, bash, ./是在当前shell的child shell中执行脚本 原文:http://www.cnblogs ...

  4. java装配bean

    java装配bean,可以自动装配,也可以显式装配: 1.通过组件扫描自动装配bean 因为使用了Configuration注解,表明这个类是一个配置类,该类应该包含在spring应用上下文如何创建b ...

  5. CentOS安装python3.5.0+uwsgi+nginx

    1安装编译工具 yum install zlib-devel bzip2-devel openssl-devel python-devel kernel-devel libffi-devel ncur ...

  6. 前端框架之Vue(8)-表单输入绑定

    基础用法 你可以用 v-model 指令在表单 <input> . <textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确 ...

  7. eclipse卡,相关优化配置

    配置eclipse.ini文件 -vmargs -Xms1024m-Xmx3072m-Dfile.encoding=UTF-8     该行设置编码 启动卡window--preferences搜索s ...

  8. Java中Collections类的排序sort函数两种用法

    java中的Colletions类主要实现列表List的排序功能.根据函数参数的传递,具体的排序可以分为 : 1.  自然排序(natural ordering). 函数原型:sort(List< ...

  9. golang 中的 sizeof 以及 golang中的 union

    golang 中的 sizeof: 1: int(unsafe.Sizeof(uint32(0))) 2: int(reflect.TypeOf(uint32(0)).Size()) golang中的 ...

  10. JsonResponse返回中文乱码问题

    class Publish(APIView): def get(self, request): publish_list = models.Publish.objects.all() bs = MyS ...