文档章节

创建可序列化的自定义数据结构

lavzchen
 lavzchen
发布于 2015/05/21 15:48
字数 234
阅读 16
收藏 0

创建的自定义类需要实现 NSCoding,NSCopying 两种协议, 如果不需要实现数据的copy功能,可以不实现NSCopying协议。

 

NScoding协议需要实现两个方法:

-(void)encodeWithCoder:(NSCoder *)aCoder   以keyValue形式对基本数据类型Encoding

-(id)initWithCoder:(NSCoder *)aDecoder     以keyValue形式对基本数据类型Decoding,返回数据模型本身

NScopying协议的方法,目的为了实现数据模型的copy

-(id)copyWithZone:(NSZone *)zone     

示例代码:

#define kNameKey @"name"
#define kAgeKey @"age"
#define kIdKey @"id"

#pragma mark-NSCoding
-(void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:m_name forKey:kNameKey];
    [aCoder encodeObject:m_age forKey:kAgeKey];
    [aCoder encodeInteger:m_id forKey:kIdKey];
}

-(id)initWithCoder:(NSCoder *)aDecoder{
    if (self == [super init]) {
        m_name =  [aDecoder decodeObjectForKey:kNameKey];
        m_age = [aDecoder decodeObjectForKey:kAgeKey];
        m_id =  [aDecoder decodeIntegerForKey:kIdKey];
    }
    
    return self;
}

#pragma mark-NSCopying
-(id)copyWithZone:(NSZone *)zone{
    MyDataClass *copy = [[[self class] allocWithZone:zone] init];
    copy.m_name = [m_name copyWithZone:zone];
    copy.m_age = [m_age copyWithZone:zone];
    copy.m_id = m_id;
    
    return copy;
}


© 著作权归作者所有

上一篇: 数据归档
lavzchen
粉丝 2
博文 33
码字总数 5049
作品 0
常州
私信 提问
Ember.js 入门指南——自定义序列化器

在Ember应用中,序列化器会格式化与后台交互的数据,包括发送和接收的数据。默认情况下会使用JSON API序列化数据。如果你的后端使用不同的格式,Ember Data允许你自定义序列化器或者定义一个...

ubuntuvim
2015/10/25
246
0
SpringBoot集成Redis--配置自定义的RedisCacheManager

配置自定义的RedisCacheManager--1自定义键生成规则 默认的键生成器 当不指定缓存的key时,SpringBoot会使用SimpleKeyGenerator生成key。 SimpleKeyGenerator SimpleKey 查看源码可以发现,它...

karma123
2018/07/17
0
0
序列化之Parcelable和Serializable

序列化与反序列化 1.Parcelable和Serializable有什么用,它们有什么差别? Parcelable和Serializable是两个接口,它们的作用是让实现了其中一个接口的类的对象能够被序列化和反序列化。 (1)S...

Jdqm
2017/12/31
0
0
关于序列化的知识

1、Parcelable和Serializable有什么用,它们有什么差别?. Serializable是Java为我们提供的一个标准化的序列化接口,那什么是序列化呢? ---- 简单来说就是将对象转换为可以传输的二进制流(二进...

Kael_祈求者
2018/01/03
0
0
python序列化数据本地存放

深入# 序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重 用,或者发送给其他人。你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的...

临峰不畏
2015/01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
8分钟前
0
0
Spring系列教程六:AOP详细讲解

AOP 概述 什么是 AOP AOP:全称是 Aspect Oriented Programming 即:面向切面编程。 AOP技术是对OOP技术的一种延伸,AOP是面向纵向,OOP是面向横向。简单的说它就是把我们程序重复的代码抽取...

我叫小糖主
22分钟前
7
0
Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
43分钟前
3
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
今天
3
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部