NSKeyedArchiever的一些属性(归档)
来源:互联网 发布:回也闻一以知十 赐也 编辑:程序博客网 时间:2024/04/28 00:01
NSKeyedArchiver
//路径的宏
#define PATH @"/Users/mac/Desktop/data.archive"
//自定义类归档后的文件的路径
#define CUSTOM_PATH @"/Users/mac/Desktop/dog.archive"
//归档:对象序列化,把对象按照一定的数据格式存储到文件里面,方便从文件中读取回对象。
//解档:反归档,读档。
//1.系统类的归档
//第一个参数:要归档的对象
//第二个参数:路径
//1.1归档
NSString *str = @"dataArchive";
BOOL ret = [NSKeyedArchiver archiveRootObject:str toFile:PATH];
if (ret) {
NSLog(@"归档成功");
}
else{
NSLog(@"归档失败");
}
//1.2解档:读档,反归档
//参数:路径
NSString *str0 = [NSKeyedUnarchiver unarchiveObjectWithFile:PATH];
NSLog(@"str0 = %@",str0);
//如果要在原有的数据基础上添加新数据(归档/plist),需要先获取到原有的数据,然后把原有数据和这次要添加的数据放到一个数组或字典中,然后把数组或字典重新进行归档(写入plist文件)。
NSArray *array0 = @[@"one",@"two",@"three"];
//str0 array0 --> NSArray NSDictionary
NSArray *finalArr = @[str0,array0];
[NSKeyedArchiver archiveRootObject:finalArr toFile:PATH];
id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:PATH];
NSLog(@"obj = %@",obj);
//2.自定义类的归档:自定义的类要想进行永久性的存储,只能通过归档的方式。
Dog *dog = [[Dog alloc]init];
dog.name = @"xiaobai";
dog.age = 4;
BOOL customRet = [NSKeyedArchiver archiveRootObject:dog toFile:CUSTOM_PATH];
if (customRet) {
NSLog(@"自定义类归档成功");
}
else{
NSLog(@"自定义类归档失败");
}
id obj1 = [NSKeyedUnarchiver unarchiveObjectWithFile:CUSTOM_PATH];
NSLog(@"自定义类解归档结果:%@",obj1);
Dog.h
//遵守协议:使用<>表示协议,<>里面写协议的名字
@interface Dog : NSObject<NSCoding>
//自定义的类要想进行归档,这个自定义的类得遵守NSCoding协议,并且实现协议中的方法
@property(copy ,nonatomic) NSString *name; //名字
@property(assign ,nonatomic) int age; //年龄
Dog.m
@implementation Dog
//实现协议中的方法
//归档要用到的方法:对要归档的内容进行归档操作
-(void)encodeWithCoder:(NSCoder *)aCoder{
//对象的归档使用encodeObject:方法
[aCoder encodeObject:self.name forKey:@"NAME"];
//基础数据类型的归档使用相应的encodeInt:方法
[aCoder encodeInt:self.age forKey:@"AGE"];
}
//解档(读档,反归档)要用到的方法
-(id)initWithCoder:(NSCoder *)aDecoder{
//如果当前类的父类也是遵守NSCoding协议的类 --> self = [super initWithCoder:]
if (self = [super init]) {
//先判断父类是否初始化成功,如果父类初始化成功,再进行自己的初始化操作
self.name = [aDecoder decodeObjectForKey:@"NAME"];
self.age = [aDecoder decodeIntForKey:@"AGE"];
}
return self;
}
-(NSString *)description{
NSString *str = [NSString stringWithFormat:@"姓名 = %@,年龄 = %d",self.name,self.age];
return str;
}
- NSKeyedArchiever的一些属性(归档)
- iOS本地存储1--NSkeyedArchiever归档
- 归档的一些小步骤
- ios开发中归档的一些心得
- XML属性列表(plist)归档
- XML属性列表(plist)归档
- 归档类与解归档类的属性以及方法的了解
- 对象归档/属性列表
- 八十五、基础框架(四十三)归档-用 XML属性表 归档
- jqgrid一些属性的使用(zendframework)
- UITouch的一些属性(拼图)
- AVAudioRecorder的一些属性(录音机)
- NSFileManager的一些属性(缓存处理)
- NSURLConnection的一些属性(状态码)
- GridView的一些特殊属性(未完)
- frame 的一些属性
- 一些重要的属性
- 获得的一些属性
- NSFileManager的一些属性(缓存处理)
- UML学习之--状态图
- rfid理论基础知识要点
- Cocos2d-x结构学习(十一)CCMenuItemImage、CCMenuItemSprite、CCAction、ccp、CCPointMake
- 追逐自己的梦想----------辅助制作第二十五课:存仓库call分析
- NSKeyedArchiever的一些属性(归档)
- 《C++语言基础》实践项目——构造函数和析构函数
- 算法分析与设计复习-P,NP,NPC问题
- Gson解析(List和Map)格式json数据
- UML学习--状态图(续)
- GPS定位精度设定问题——ACCURACY_FINE or ACCURACY_HIGH
- 微信企业号开发入门
- NSURLConnection的一些属性(状态码)
- leetcode001:Two Sum