Object-C-自定义类型归档
对自定义类型的对象进行本地化保存,那么该类型必须实现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-自定义类型归档的更多相关文章
- Object类型转换成自定义类型(向下转型)
Object类型转换成自定义类型 场景: 从数据库或者别的途径接收对象的时候用Object,但是用的时候怎么object点(方法提示 | alt+'/'),都点不出自定义类型的方法. 比如,数据库查询 ...
- 《精通C#》自定义类型转化-扩展方法-匿名类型-指针类型(11.3-11.6)
1.类型转化在C#中有很多,常用的是int类型转string等,这些都有微软给我们定义好的,我们需要的时候直接调用就是了,这是值类型中的转化,有时候我们还会需要类类型(包括结构struct)的转化,还 ...
- Struts2框架的自定义类型转换器
前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...
- iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...
- sruts2 自定义类型转换器
1.1.1 Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP ...
- 一个关于自定义类型作为HashMap的key的问题
在之前的项目需要用到以自定义类型作为HashMap的key,遇到一个问题:如果修改了已经存储在HashMap中的实例,会发生什么情况呢?用一段代码来试验: import java.util.HashM ...
- Struts2之自定义类型转换器
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...
- [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 自定义类型转换器converter
作用:目前将日期转换成string,将string转换成我想要的类型 0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时 表单数据以字符串的形式提交 ...
- 用SQLData读写数据库自定义类型
如何读写自定义类型?SQLData是个很直观的解决办法 在oracle使用手册上找到了很好的资料 点击打开链接 http://docs.oracle.com/cd/B10501_01/java.920 ...
随机推荐
- wait()函数的详细分析
之前一直没太深入的去理解wait()函数,今天机缘巧合之前又看了看,发现之前没有真正的理解该函数. 众所周知,wait()函数一般用在父进程中等待回收子进程的资源,而防止僵尸进程的产生. (In UN ...
- 封装一个axios请求后台的通用方法
import axios from 'axios'; import constant from '@/js/const'; import alert from '@/js/alertView'; le ...
- 【PyQt5-Qt Designer】在GUI中使用pyqtgraph绘图库
pyqtgraph绘图库 1.1 简介: pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以 ...
- Mybatis返回值类型是hashmap,输入键值对为空时,key 丢失的问题
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- python基于django编写api+前端后端分离
有用 https://segmentfault.com/a/1190000016049962#articleHeader2 python的前后端分离(一):django+原生js实现get请求 htt ...
- Linux软件包的安装(rpm+yum)
概述: 1.rpm软件包管理命令软件包的获取a.光盘镜像中有很多软件包可以使用:先挂载光盘,再查看软件包b.从软件的官网获取 .rpm 安装rpm包 ipm -ivh 软件包名称删除rpm包 ipm ...
- 系统进不去怎么办?教你利用bootice工具引导修复系统
http://sh.qihoo.com/pc/9c2e9690a82b8cd38?sign=360_e39369d1 U盘装机大师下载地址 http://www.upandashi.com/down/
- 算法面经之讯飞+CVTE
一.科大讯飞(合肥) 概况:刚经历了科大讯飞的初面,大概35分钟左右,问的内容比较笼统,主要针对简历上的内容来,面试官比较亲切,回忆了一下面试内容. 建议:把简历上的内容整吧清楚,不知道的别瞎写,写了 ...
- [vue]webpack使用样式
webpack: 使用自己写样式 main.js导入全局生效 import Vue from 'vue' import App from './App.vue' import './index.css ...
- 【LeetCode每天一题】Combination Sum II(组合和II)
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...