NSCoder
person.h头文件内容
- #import <Foundation/Foundation.h>
- @interface Person : NSObject
- {
- NSString *name;
- char sex;
- int age;
- }
- @property(nonatomic,copy) NSString *name;
- @property char sex;
- @property int age;
- @end
person.m实现文件
- #import "Person.h"
- @implementation Person
- @synthesize name,age,gender;
- -(void)encodeWithCoder:(NSCoder *)aCoder
- {
- [aCoder encodeObject:name forKey:@"stuName"];
- NSNumber *age1 = [NSNumber numberWithInt:age];
- [aCoder encodeObject:age1 forKey:@"stuAge"];
- NSNumber *gender1 = [NSNumber numberWithChar:gender];
- [aCoder encodeObject:gender1 forKey:@"stuGender"];
- }
- -(id)initWithCoder:(NSCoder *)dCoder
- {
- name = [dCoder decodeObjectForKey:@"stuName"];
- age = [[dCoder decodeObjectForKey:@"stuAge"]intValue];
- gender = [[dCoder decodeObjectForKey:@"stuGender"]charValue];
- return self;
- }
- @end
main.m测试文件
- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- Person *p1 = [[Person alloc]init];
- p1.name = @"zhangsan";
- p1.age = 22;
- p1.gender = 'F';
- Person *p2 = [Person new];
- p2.name = @"lisi";
- p2.age = 23;
- p2.gender = 'M';
- NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:30];
- [dic setObject:p1 forKey:@"person1"];
- [dic setObject:p2 forKey:@"person2"];
- //把字典内容存入到文件中
- if ([NSKeyedArchiver archiveRootObject:dic toFile:@"/Users/mac/Desktop/a.plist"] ) {
- NSLog(@"chenggong");
- }
- NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithCapacity:30];
- //从文件中读取内容放入到字典中
- dic2 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/mac/Desktop/a.plist"];
- NSEnumerator *enumerator = [dic2 objectEnumerator];
- id obj;
- //遍历字典内容
- while (obj = [enumerator nextObject]) {
- NSLog(@"name = %@,age = %i,gender = %c",[obj name],[obj age],[obj gender]);
- }
- }
- return 0;
- }
NSCoder的更多相关文章
- iOS 数据序列化,NSCoding, NSCoder
iOS可以利用NSKeyedArchiver类将对象序列化成NSData存储在磁盘上,但前提是该对象所属的类必须遵从NSCoding协议. NSCoding协议包含两个方法,要序列化的类必须实现它们 ...
- iOS开发——数据持久化&本地数据的存储(使用NSCoder将对象保存到.plist文件)
本地数据的存储(使用NSCoder将对象保存到.plist文件) 下面通过一个例子将联系人数据保存到沙盒的“documents”目录中.(联系人是一个数组集合,内部为自定义对象). 功能如下: ...
- iOS开发——OC篇&协议篇/NSCoder/NSCoding/NSCoping
协议篇/NSCoder/NSCoding/NSCoping 协议声明类需要实现的的方法,为不同的类提供公用方法,一个类可以有多个协议,但只能有一个父类,即单继承.它类似java中的接口. 正式协议(f ...
- Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)
下面通过一个例子将联系人数据保存到沙盒的“documents”目录中.(联系人是一个数组集合,内部为自定义对象). 功能如下: 1,点击“保存”将联系人存入userList.plist文件中 2,点击 ...
- 加载xib文件,如果想在初始化的时候就添加点东西就重载-(id)initWithCoder:(NSCoder *)aDecoder
- (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { self.cl ...
- iOS开发-数据存储NSCoder
软件中永远绕不开的一个问题就是数据存储的问题,PC的时候一般都是选择在数据库中存储,iOS如果是和后端配合的话,那么不需要考虑数据存储的这个问题,上次写了一下plist的存储,不过数据都是存储一些简单 ...
- NSKeyedArchiver : NSCoder
NSKeyedArchiver : NSCoder @interface NSData : NSObject <NSCopying, NSMutableCopying, NSSecureCodi ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- MCDownloadManager ios文件下载管理器
我们用AFNetworking小试牛刀,写一个简单的下载器来演示功能. 前言 为什么AFNetworking能够成为顶级框架?我们究竟该如何领悟它的精髓所在?这都是很难的问题.安全,高效,流畅,这3个 ...
随机推荐
- 支付宝热补丁技术— AndFix原理[阿里Hao]
本文由嵌入式企鹅圈原创团队成员.阿里资深project师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理.它本质上就是hook要改动的函数.这样一来在正式版本号公布时就不能直接拿热补 ...
- (转载)Unity3D研究院之使用 C#合成解析XML与JSON(四十一)
XML与JSON在开发中非常重要, 其实核心就是处理字符串.一个是XML的字符串一个是JSON的字符串,尤其是在处理网络请求的时候,肯定是要用的.另外现在JSON非常的流行,我写了一个简单的例子融合了 ...
- 1501: 货币系统(money)
1501: 货币系统(money) 时间限制: 1 Sec 内存限制: 64 MB 提交: 33 解决: 12 [提交][状态][讨论版] 题目描述 母牛们不但创建了它们自己的政府,而且选择建立了 ...
- 汇编 DOS的中断调用 INT 21H
DOS系统功能调用 这个汇编指令是用于提供DOS系统功能调用. 它是由DOS提供的一组实现特殊功能的子程序供程序猿在编写自己的程序时调用,以减轻编程的工作量. 分两种,re=view"> ...
- 3N Numbers
D - 3N Numbers Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Let N b ...
- Linux下OpenOffice的安装与启动
公司项目需求中增加了文档预览功能,所以采用了OpenOffice提供的将office文件转换为pdf的工具.那么我们的程序运行在服务器端,服务器系统版本多是Linux,因此有必要记录下Linux下Op ...
- C#关于AutoResetEvent的使用介绍----修正
说明 之前在博客园看到有位仁兄发表一篇关于AutoResetEvent介绍,看了下他写的代码,看上去没什么问题,但仔细看还是能发现问题.下图是这位仁兄代码截图. 仁兄博客地址:http://www.c ...
- Linux中的日志分析及管理
日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”.此外,当主机遭受攻击时,日志文件还可以帮 ...
- 用户画像 销量预测 微观 宏观 bi
w 目前我们没有自己的平台 第三方平台又不会给任何我们想要的数据 没有用户的注册信息 全天候的行为信息 用户画像没法做 针对我们业务的bi做的思路是什么呢 数据中心怎么做销量预测呢 ...
- vs编译程序不能实现,“未能完成操作 未指定的错误”的解决办法
1.先把.vcproj 文件剪切到其他地方 2.打开.sln,报错->点“确定”->再点“确定” 3.把 .vcproj 文件 放回来,在vs2005右边的“解决方案”处右键 重新加载,就 ...