iOS数据持久化之NSKeyedArchiver(归档)
来源:互联网 发布:php实例化对象方法 编辑:程序博客网 时间:2024/05/16 09:12
归档可以实现把自定义的对象存放在文件中.
注意://遵守NSCoding协议,并实现该协议中的两个方法。
下面举个小例子详细介绍如何使用NSCoder
1.首先自定义一个Person类
#import <Foundation/Foundation.h>@interface JYPerson : NSObject<NSCoding>//姓名@property(nonatomic,copy)NSString *name;//年龄@property(nonatomic,assign)int age;//身高@property(nonatomic,assign)double height;@end
#import "JYPerson.h"@implementation JYPerson//遵守NSCoding协议,并实现该协议中的两个方法。//将一个自定义对象保存到文件的时候就会调用该方法//在该方法中说明如何存储自定义对象的属性,也就是说在该方法中说清楚存储自定义对象的哪些属性-(void)encodeWithCoder:(NSCoder *)aCoder{ NSLog(@"保存数据"); [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"]; [aCoder encodeDouble:self.height forKey:@"height"];}//从文件中读取一个对象的时候就会调用该方法//在该方法中说明如何读取保存在文件中的对象,也就是说清楚怎么读取文件中的对象-(instancetype)initWithCoder:(NSCoder *)aDecoder{ NSLog(@"读取数据"); if(self=[super init]) { self.name=[aDecoder decodeObjectForKey:@"name"]; self.age=(int)[aDecoder decodeIntegerForKey:@"age"]; self.height=[aDecoder decodeDoubleForKey:@"height"]; } return self;}@end
2.在控制器对应的xib里拖两个butto控件,连线
//归档可以实现把自定义的对象存放在文件中#import "ViewController.h"#import "JYPerson.h"@interface ViewController ()- (IBAction)saveBtnClick:(id)sender;- (IBAction)readBtnClick:(id)sender;@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor=[UIColor orangeColor];}//保存数据- (IBAction)saveBtnClick:(id)sender { //1.创建对象 JYPerson *person=[[JYPerson alloc]init]; person.name=@"小悦悦"; person.age=24; person.height=173.5; //2.获取文件路径 NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; NSString *path=[docPath stringByAppendingPathComponent:@"person.gu"]; //3.将自定义的对象保存到文件中 [NSKeyedArchiver archiveRootObject:person toFile:path];}//读取数据- (IBAction)readBtnClick:(id)sender { //1.获取文件路径 NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; NSString *path=[docPath stringByAppendingPathComponent:@"person.gu"]; //2.从文件中读取对象 JYPerson *person=[NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"我看看读取的值是:%@ %d %lf",person.name,person.age,person.height);}
1 0
- IOS数据持久化之归档NSKeyedArchiver
- iOS数据持久化之NSKeyedArchiver(归档)
- iOS数据持久化之归档NSKeyedArchiver
- iOS数据持久化-归档NSKeyedArchiver
- 【IOS-Swift】实战笔记——数据持久化之归档NSKeyedArchiver
- ios开发学习笔记--数据持久化之归档解档(NSKeyedArchiver/ NSKeyedUnarchiver)
- IOS数据持久化之NSKeyedArchiver
- iOS对象持久化归档 NSKeyedArchiver
- NSKeyedArchiver、NSKeyedUnarchiver 数据持久化归档
- 数据持久化之NSKeyedArchiver
- 数据持久化之NSKeyedArchiver
- 数据持久化(三)使用NSKeyedArchiver归档
- OC数据持久化方案2-NSKeyedArchiver归档
- iOS数据持久化之归档
- IOS数据持久化之对象归档
- iOS数据持久化之归档
- ios 数据持久化之 归档
- iOS - 数据持久化---- NSUserDefaults & NSKeyedArchiver
- java.io.FileNotFoundException: Too many open files
- 【Android基础 008】 Eclipse Devices中查看不到真实android设备的解决方法
- SSDP协议下STA模式和softAP模式间切换时遇到的数据收发问题
- 鱼眼相机标定以及OpenCV实现
- 【jQuery】兼容IE6树形组件jquery-treeview-master
- iOS数据持久化之NSKeyedArchiver(归档)
- SwiftBasicSyntax-Learn Swift(First Day)
- 【Caffe实践】基于Caffe的人脸关键点检测实现
- Web前端性能优化
- Eclipse更改workspace路径
- Android中使用shape自定义纯色图片总结
- Mysql MERGE引擎分表查询机制
- RSNA、802.1X及4-way handshake的关系
- 邮件开发:Tomcat中JavaMail支持与冲突