NSCoding和NSCopy

为什么80%的码农都做不了架构师?>>>   hot3.png

很多时候我们都需要将对象序列化,比如将一个对象存入到NSUserDefault 里面去的时候,由于NSUserDefault支持存入的类型有限制,所以很多时候我们需要将NSObject类型的对象转换成NSData再存入进去。

- (id)initWithCoder:(NSCoder *)aDecoder
{self = [super init];if (self) {self.country = [aDecoder decodeObjectForKey:@"country"];self.city = [aDecoder decodeObjectForKey:@"city"];self.region = [aDecoder decodeObjectForKey:@"region"];self.street = [aDecoder decodeObjectForKey:@"street"];self.location = [aDecoder decodeObjectForKey:@"location"];}return self;
}- (void)encodeWithCoder:(NSCoder *)aCoder
{[aCoder encodeObject:_country forKey:@"country"];[aCoder encodeObject:_city forKey:@"city"];[aCoder encodeObject:_region forKey:@"region"];[aCoder encodeObject:_street forKey:@"street"];[aCoder encodeObject:_location forKey:@"location"];
}

当你要进行对象拷贝的时候需要遵循NSCopy协议

- (id)copyWithZone:(NSZone *)zone {id copy = [[[self class] alloc] init];if (copy) {[copy setId:[self.id copyWithZone:zone]];[copy setNickName:[self.nickName copyWithZone:zone]];}return copy;
}




转载于:https://my.oschina.net/megan/blog/181463

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何获取 Process.Start 打开进程的输出结果?

咨询区 stighy我想用 C# 通过控制台开启一个外部程序,理论上我就可以让程序和这个外部程序实现交互,但现在我遇到了两个问题。如何获取控制台上的输出呢?我想将结果写到我的 textbox 上。如何获取数值型的值让我可以展示进度条。回答区 Ferru…

如何判断对象是不是出轨了?

1 教官让学生表演才艺(素材来源网络,侵删)▼2 人类幼崽的想象力能有多丰富?(素材来源豆瓣,侵删)▼3 来自医生的建议(素材来源网络,侵删)▼4 这个手机壳很不…

MVC-控制器向View传值的三种方法

1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date DateTime.Now; return View(date); } 然后我们在视图中使用Razor的Model关键字来访问这个对象 { ViewBag.Title "Index"; } <h2>Index</h2&g…

Android之内核学习笔记

0、Android系统启动 《Android系统启动流程 -- bootloader》 《The Android boot process from power on》 《Android 启动过程介绍》 《Android培训班(86)内核运行之前的引导程序》 这是一系列文章 《Android 分区挂载》 1、init 《深入理解android 卷1》 第3章 深入理解…

能源项目xml文件 -- app-context.xml

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframework.org/schema/c…

python列表操作程序_Python列表操作,比较常见的10个问题

列表是比较常用的数据类型之一&#xff0c;本文整理了 StackOverflow 上关于列表操作被访问较多的10个问答&#xff0c;如果你在开发过程中遇到这些问题&#xff0c;不妨先思考一下如何解决。1、迭代列表&#xff0c;如何访问列表下标索引普通版&#xff1a;items [8, 23, 45]…

ViewData 和 ViewBag 到底有什么区别?

咨询区 user469652请问 ASP.NET MVC 中的 ViewBag 和 ViewData 到底哪一个好&#xff0c;在实际项目开发中应该选择哪一个&#xff1f;回答区 Naresh RavlaniViewData它需要对复杂类型进行类型转换并且还要检查null值来防止错误。ViewBag它不需要对 复杂类型 进行类型转换。考虑…

更新整理本人所有博文中提供的代码与工具(C++,2013.11)

为了更方便地管理博文中涉及的各种代码与工具资源&#xff0c;现在把这些资源迁移到 Google Code 中&#xff0c;有兴趣者可前往下载。C1、《通用高性能 Windows Socket 组件 HP-Socket v3.0.2 正式发布》 《基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计…

Android之用AccessibilityService实现红包插件

微信红包自打出世以来就极其受欢迎,抢红包插件可谓红极一时.今天,我们重新谈谈抢红包插件的哪些事儿.本质上,抢红包插件的原理不难理解,其过程就是在收到红包时,自动模拟点击.做过自动化UI测试的童鞋应该非常熟悉了.那么问题来了,我们怎么知道有没有红包,又怎么模拟点击操作呢?…

【软件周刊】D语言卷土重来,Vue.js 应获 1024 个赞,小薇可以一键启动了

2019独角兽企业重金招聘Python工程师标准>>> 一、 前端相关 1. Vue.js — Vue.js 这次的更新比较频繁&#xff0c;才刚刚更新完 2.0.4 版本不久&#xff0c;立马就更新出了 2.0.5 版本。这次发布的 2.0.4 版本主要的亮点是 SSR 性能改进了 20%&#xff0c;然后接着更…

LINUX内核完全注释

学习教材&#xff1a;LINUX内核完全注释&#xff0c;内核版本0.11&#xff0c;修正版V3.0 赵炯编著 参考教材&#xff1a;UNIX操作系统设计--M. J. Bach&#xff0c; programming the 80x86 --John H. Crawford MINIX操作系统的设计与实现--Andrew S.Tanenbaum --Tanenbaum 学…

Autofac实现拦截器和切面编程

Autofac.Annotation框架是我用.netcore写的一个注解式DI框架&#xff0c;基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成。开源地址&#xff1a;https://github.com/yuzd/Autofac.Annotation上期说了Autofac实现有条件的DI本期讲的是最新…

python好用的模块和包_Python模块和包详细讲解与实例分析

一丶模块我们经常说模块模块的,究竟什么是模块呢?一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀但其实import加载的模块分为四个通用类别:1.使用Python编写的代码(.py文件)2.已被编译为共享库或DLL的C或C扩展3.包好一组模块的包4.使用C编写并链接…

C语言之struct A *b和struct A c区别

struct A *b; 是指针 struct A c; 是定义了一个struct A对象,你得提供相应的结构体的具体定义 结构体A没有具体的定义,当struct A c时,实际是定义一个结构体变量,这是要分配存储空间的,空间大小依结构体中具体的变量而定,如果没有具体的结构体定义,编译器不知道结构体到底是什…

JS的类型转换

当string&#xff0c;number函数不被用作构造函数的可以当成转换函数 如 string(false),number(‘3’),boolean([]) Object(3) new number(3); 除了NULL和undefined以外任何值都具有toString()方法 JS 在执行程序的时候会自动检测表达式来进行变量转换。 显示转换变量&#xf…

linux 下执行.sh文件总是提示permission denied

今天执行.sh文件懂得时候提示 permission denied错误 解决办法: chmod 777 file.sh 或者 chmod+x file.sh 比如我们执行一个变量加1的时候,不能这样写 a = 1; a = $($a +1) echo $a 需要这样写: a=1 a=$(($a+1)) echo $a 还有写sh文件的时候代码之间不需要留下空格…

ahjesus解决win下U盘无法写入的问题

可能是由于不同品牌的U盘出厂时磁盘分区和格式化方式不同而引起的兼容性问题。解决方案如下 启动cmd。输入diskpart&#xff0c;启动DISKPART工具 在DISKPART窗口中输入以下命令&#xff1a; >list disk &#xff08;此命令是列出所有磁盘驱动器&#xff0c;请务必看清楚你的…

[探索 .NET 6]01 揭开 ConfigurationManager 的面纱

在这个系列中&#xff0c;我将探索一下 .NET 6 中的一些新特性。已经有很多关于 .NET 6 的内容&#xff0c;包括很多来自 .NET 和 ASP.NET 团队本身的文章。在这个系列中&#xff0c;我将探索一下这些特性背后的一些代码。在这第一篇文章中&#xff0c;来研究一下 Configuratio…