数据持久化------Archiving(归档,解档)
其中TRPerson为自定义的继承自NSObject的类的子类 其中有两个属性,name 和 age
.h文件
#import
@interface TRPerson : NSObject<</span>NSCoding>
@property (nonatomic,strong)NSString *name;
@property (nonatomic,strong)NSNumber * age;
//初始化方法
- (id)initWithName:(NSString*)name withAge:(NSNumber *)age;
@end
.m文件
#import "TRPerson.h"
@implementation TRPerson
- (id)initWithName:(NSString *)name withAge:(NSNumber *)age{
if (self=[super init]) {
self.age=age;
self.name=name;
}
return self;
}
#pragma mark - NSCoding
//对属性进行解码(时机:执行encodeObject方法)
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
self= [super init];
if (self) {
self.name= [aDecoder decodeObjectForKey:@"name"];
self.age=[aDecoder decodeObjectForKey:@"age"];
}
return self;
}
//对属性进行编码的方法
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.age forKey:@"age"];
[aCoder encodeObject:self.name forKey:@"name"];
}
- (NSString *)description{
TRPerson *person=[[TRPerson alloc]initWithName:self.name withAge:self.age];
return [NSString stringWithFormat:@"name:%@ age:%@",person.name ,person.age];
}
@end
ViewController中的viewDidLoad方法中实现数据的归档和解挡
- (void)viewDidLoad {
[super viewDidLoad];
//准备工作
//将自定义的TRPerson对象进行归档(写)
TRPerson *person=[[TRPerson alloc]initWithName:@"张飞" withAge:@20];
//Documents/archiving
NSString *doumentsPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES).firstObject;
NSString *archiverPath = [doumentsPath stringByAppendingPathComponent:@"archving"];
//1.可变数据类型
NSMutableData *data=[NSMutableData data];
//2.归档对象
NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
//3.编码
[archiver encodeObject:person forKey:@"person"];
//4.编码完成
[archiver finishEncoding];
//5.写入文件
[data writeToFile:archiverPath atomically:YES];
//将自定义的TRPerson对象进行解挡(读)
//1.读取数据
NSData *readingData=[NSData dataWithContentsOfFile:archiverPath];
//2.解码对象
NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:readingData];
//3.解码
TRPerson *personRead=[unArchiver decodeObjectForKey:@"person"];
//4.完成解码
[unArchiver finishDecoding];
//验证
NSLog(@"%@",personRead );
}
数据持久化------Archiving(归档,解档)的更多相关文章
- 数据存储之归档解档 NSKeyedArchiver NSKeyedUnarchiver
在构建应用程序时,有一个重要的问题是如何在每次启动之间持久化数据,以便重现最后一次关闭应用前的状态.在iOS和OS X上,苹果提供了三种选择:Core Data.属性列表(Property List) ...
- IOS数据存储之归档/解档
前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...
- IOS s数据存储之归档解档
#import <Foundation/Foundation.h> @interface Student : NSObject <NSCoding>; @property(no ...
- iOS开发中的4种数据持久化方式【一、属性列表与归档解档】
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
- iOS 浅复制、深复制、完全复制的知识点梳理验证(附加归档解档)
在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值 ...
- 归档 & 解档
代码实现 遵守协议 class AccessToken: NSObject, NSCoding 实现协议方法 // MARK: - 归档&解档 required init(coder aDec ...
- iOS 浅赋值、深复制、全然复制的知识点梳理验证(附加归档解档)
写于前: 在之前转载的一片文章中.文中对浅复制和深复制进行了具体的解读,同一时候还提到了深复制(one-level-deep copy).全然复制(true copy)的概念,并指出iOS开发中的深复 ...
- iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...
随机推荐
- Linux系统下安装phpmyadmin方法
phpmyadmin下载地址:不要分,赶紧去下载吧!http://download.csdn.net/detail/u011986449/7429799 1.找到 /libraries/config. ...
- IOS 8弃用api
IOS 8弃用api 下面api是弃用: 的 UIApplication 方法和属性注冊通知. 使用新的API. 的 uiviewcontroller 面向接口的方法和属性. 中描写叙述的特征和大小类 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式宣布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件.广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...
- C#核编之一个简单的C#程序
构建一个简单的C#应用程序需要注意一下几点: 1.C#要求所有的程序逻辑都包含在一个类型定义中 --->这里的类型指的是(类,接口,结构,枚举,委托中的一个或多个) 2.与其他语言不 ...
- html系列教程--DOCTYPE a area
<!DOCTYPE>标签:<!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令.在 HTML 4.01 中,& ...
- 第一章ASP.NET SignalR简介
第一章ASP.NET SignalR简介 1.1概述: ASP.NET SignalR是微软新开发的类库,为的是帮助ASP.NET开发人员很方便地开发实时网络功能. SignalR允许服务器端和客户端 ...
- Android常见布局问题
原文链接:http://www.cnblogs.com/Birdmafly/p/3809802.html 好久没写博了,因为最近在忙着做一个app,实在是没有时间.现在快完工了.想着还是把这个布局问题 ...
- 关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
这篇文章主要介绍了关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器,需要的朋友可以参考下.希望对大家有所帮助 Firefox 和 IE 的浏览器各自实现了input历史记录的功能 ...
- OpenID倡议:别再创建新的用户名和密码
原文作者:Jeff Atwood 随着Stack Overflow开发工作的逐步深入,我们不可回避地碰到了这个问题:我们需要让用户登录,即使网络上用户名/密码已经泛滥成灾,我们也只能随波逐流.我已经有 ...
- Android Every day a new function:two
分享功能: 效果图: 代码(分享TEXT,视频或者图片设置type即可): @Override protected void onCreate(Bundle savedInstanceState) { ...