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个 ...
随机推荐
- C#二进制序列化和反序列化
public class WRSerializable { public static void SerializeToFile<T>(T _description, string _fi ...
- Unity3D学习笔记——NGUI之Property Binding
Property Binding:用于绑定两个组件,然后可以将一个组件的信息发送给另一个组件. 效果图如下: 一:使用步骤 1.建立一个Sprite 2.建立一个Label 3.为Sprite添加Pr ...
- Codeforces 460 D. Little Victor and Set
暴力+构造 If r - l ≤ 4 we can all subsets of size not greater than k. Else, if k = 1, obviously that ans ...
- Activity四种启动方式
Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...
- Android无线测试之—UiAutomator UiSelector API介绍之六
对象搜索—类名与包名 一.类名属性定位对象 返回值 API 描述 UiSelector calssName(String className) 完整类名匹配 UiSelector calssNameM ...
- (转载)java提高篇(五)-----抽象类与接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 本文是转载的(尊重原著),原文地址:http://www.cnblogs.com/chenssy/p/3376708.html 抽象类 ...
- 《从零开始学Swift》学习笔记(Day 45)——重写方法
原创文章,欢迎转载.转载请注明:关东升的博客 重写实例方法 在子类中重写从父类继承来的实例方法和静态方法.先介绍实例方法的重写. 下面看一个示例: class Person { var name: S ...
- 【转】图解MySql命令行创建存储过程
一 操作实例 首先登录mysql: 使用source命令,从命令行执行sql脚本,创建表: 创建第一个存储过程: 事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";&q ...
- 【22,23节】Django的GET和POST属性笔记
COOKIES:一个标准的python字典对象,包含所有cookies,键和值都为字符串session:一个即能读又能写的类似字典对象,表示当前的会话,只有当django启用会话的支持时才可用 一键多 ...
- javascript实例:两种方式实现tab栏选项卡
方法1: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...