自定义的对象的解档和归档


如果想对自己自定义的类进行解档和归档的话 必须遵循一个协议:NSCoding

Student.h 文件

#import <Foundation/Foundation.h>

@interface Student : NSObject<NSCoding>
@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age; -(instancetype)initWithName:(NSString *)name AndAge:(int)age; @end

Student.m 文件

#import "Student.h"

@implementation Student

- (instancetype)initWithName:(NSString *)name AndAge:(int)age
{
self = [super init];
if (self) {
_age=age;
_name=name;
}
return self;
}
//解答时候调用 是一个初始化的方法
-(instancetype)initWithCoder:(NSCoder *)aDecoder{ self=[super init];
if (self) {
_name=[aDecoder decodeObjectForKey:@"name"];
_age=(int)[aDecoder decodeIntegerForKey:@"age"];
}
return self;
} //归档调用该方法
-(void)encodeWithCoder:(NSCoder *)aCoder{ NSLog(@"encodeWithCoder");
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInteger:_age forKey:@"age"]; } -(NSString *)description{
return [NSString stringWithFormat:@"name=%@,age=%d",_name,_age];
} @end

客户端代码

#import "ViewController.h"
#import "Student.h"
#define PATH [NSHomeDirectory() stringByAppendingPathComponent:@"Student.qll"]
@interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; NSLog(@"%@",PATH); Student *stu=[[Student alloc]init];
stu.name=@"张F";
stu.age=; NSLog(@"%@",stu);
//归档
BOOL bol=[NSKeyedArchiver archiveRootObject:stu toFile:PATH]; if (bol==) {
NSLog(@"归档成功");
} //解档 Student *stu1=[NSKeyedUnarchiver unarchiveObjectWithFile:PATH];
NSLog(@"%@",stu1); } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

运行结果:

iOS 自定义的对象类型的解档和归档的更多相关文章

  1. 七:python 对象类型详解三:列表

    一:列表简介: 1,列表可以包含任何种类的对象:数字.字符串甚至集合对象类型.列表都是可变对象,它们都支持在原处修改的操作,可以通过指定的偏移量和分片.列表方法调用.删除语句等方法来实现.关键的作用有 ...

  2. 六:python 对象类型详解二:字符串(下)

    一:字符串方法: 方法就是与特定对象相关联在一起的函数.从技术的角度来讲,它们是附属于对象的属性,而这些属性不过是些可调用的函数罢了.Python 首先读取对象方法,然后调用它,传递参数.如果一个方法 ...

  3. 四:python 对象类型详解一:数字(下)

    一:位操作 除了一般的数学运算,python也支持c语言中的大多数数学表达式.这包括那些把整数当作二进制位串对待的操作.例如,还可以实现位移及布尔操作: >>> x = 1 > ...

  4. iOS自定义多参数类型方法

    前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题.这里做一下记录. 我自定义了一个方法: - (instancet ...

  5. 三:python 对象类型详解一:数字(上)

    一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...

  6. 十:python 对象类型详解六:文件

    一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...

  7. 九:python 对象类型详解五:元组

    一:元组: 1,简单介绍:元组由简单的对象组构成.元组与列表非常类似,只不过元组不能在原处修改(它们)是不可变的,并且通常写成圆括号中的一系列项.虽然元组不支持任何方法调用,但元组具有列表的大多数属性 ...

  8. 八:python 对象类型详解四:字典

    一:字典通识: 1,字典通过键而不是偏移量来读取: 2,字典是任意对象的无序集合: 3,字典可变长.异构.任意嵌套: 4,字典属于可变映射类型: 5,对象引用表(散列表): 二:实际应用中的字典: 1 ...

  9. JavaScript中的对象类型详解

    To be finished 摘要 1.什么是对象? 2.引用类型和原始类型 3.对象数据属性拥有的特性(Attributes) 4.如何创建对象 a.直接定义 var mango={color:&q ...

随机推荐

  1. Android Studio添加PNG图片报错原因

    今天在网上看到一个关于Splash Activity的Android帖子,博主在一通讲解之后也给出了代码.于是果断下载下来了看看怎么实现的.一步步照着流程把这个功能实现了一遍.一切都没有大问题,但是在 ...

  2. helper实现隐藏前台特效

    想实现下面的功能:如下图所示 点击已结束按钮,使上面的红色跳转到已结束活动按钮上面,本来前台代码里面是使用了一个action来实现的,但是我改了点东西,使跳转不了. 前台代码 <ul class ...

  3. [Asp.net 5] DependencyInjection项目代码分析3-Ninject

    Microsoft.Framework.DependencyInjection.Ninject 该工程内部共包含5个类文件,底层使用Ninject实现依赖注入,工程截图如下: 从文件命名可以看出,Ni ...

  4. 反射(Reflection)的SetValue遇上DBNULL转换为string

    有网友回馈说提供的代码有bug.你可以从这个链接下载得到:http://www.cnblogs.com/insus/p/3384472.html 其中有一个Utility,它是把DataTable转换 ...

  5. MVC _ aspx视图引擎登录及状态保持

    MVC - M(Model模型层)   V(View视图层)   C(Control控制层) 数据访问层        界面层       业务逻辑层 WebForm 是请求访问哪一个页面,返回的是一 ...

  6. 用js解析经json序列化后的C#的DateTime类型数据

    格式化日期(网上到处是),把下面的代码添加到jQuery.js文件中 //格式化日期 Date.prototype.format = function(format) { /* * eg:format ...

  7. 新浪微博.Net SDK第三版源代码和示例【最后一次更新了】

    时间过得飞快,距离上次SDK更新已经3年有余.随着官方的不断跟新,老版SDK的部分接口已经不能正常使用.因此在QQ群里来吐槽的.来谩骂的朋友也开始多了起来.随着时代的发展,微博已经彻底的被微信甩开,因 ...

  8. 修复一个吉日嘎拉MSSQL数据库版中的分页存储过程bug

    这个存储过程是3.7以来一直存在,并未针对MSSQL2005以上版本进行ROW_NUMBER() OVER升级,还是延续TOP的写法.这并非是我所谓的bug,我所说的bug是指执行了排序的字段,如果字 ...

  9. Hibernate---detached entity passed to persist一个解决方法

    1.查看id生成策略,2.查看是否是手动设置的id :3.查看实体对象映射配置是否正确. 例如: public Emplopes(String name, char gender) { super(n ...

  10. 关于Bugzilla WebService接口

    参考:http://www.bugzilla.org/docs/3.2/en/html/api/Bugzilla/WebService.html http://www.bugzilla.org/doc ...