ios 对象归档解档 runtime实现
来源:互联网 发布:舒适达专业修复知乎 编辑:程序博客网 时间:2024/04/30 03:10
什么是归档?什么是解档?
归档:就是把对象序列化,序列化就是把对象写到一个指定的app路径下的文件里,app有三个目录分别是:docments、library、tmp,也叫做对象的持久化,ios开发中一般的持久化不支持自定义对象的持久化,归档解档就可以完成自定义对象的持久化。
实现归档解档的步骤:
Step1:要实现对象的归档解档首先继承Coding协议(protocol)
Step2:实现两个方法:encodeWihtCoder: 和 initWithCoder:
runtime实现方法 少写很多的给属性赋值的方法
//归档- (void)encodeWithCoder:(NSCoder*)aCoder{ NSLog(@"归档encodeWithCoder方法调用了"); unsigned int count = 0; Ivar* ivars = class_copyIvarList([self class], &count); for (int i = 0; i < count; i++) { Ivar ivar = ivars[i]; const char* name = ivar_getName(ivar); NSString* key = [NSString stringWithUTF8String:name]; [aCoder encodeObject:[self valueForKey:key] forKey :key]; } free(ivars);}//解档- (id)initWithCoder:(NSCoder*)aDecoder{ NSLog(@"解档initWithCoder方法调用了"); if (self == [super init]) { unsigned int count = 0; Ivar* ivars = class_copyIvarList([self class], &count); for (int i = 0; i < count; i++) { Ivar ivar = ivars[i]; const char* name = ivar_getName(ivar); NSString* key = [NSString stringWithUTF8String:name]; id value = [aDecoder decodeObjectForKey:key];//根据key拿到value [self setValue:value forKey:key];//KVC赋值 } free(ivars); } return self;}
使用: 归档
//获取文件目录NSString* docPatn = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//NSString* homePath = NSTemporaryDirectory();NSLog(@"docPath = %@",docPatn);NSLog(@"homePath = %@",homePath);NSString* path = [docPatn stringByAppendingPathComponent:@"zht.hank"]; //自定义对象存到文件中[NSKeyedArchiver archiveRootObject:person toFile:path];解档: ZHTPerson* p = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"name = %@,age = %d",p.name,p.age);
0 0
- ios 对象归档解档 runtime实现
- Runtime--将信息对象归档解档
- iOS 对象的归档、解档 runtime
- runtime 实现 归档和解档
- 利用runtime实现自定义对象归档总结
- iOS 提升之利用runtime进行归档/解归档
- IOS 对象的归档与解档
- iOS对象的归档与解档
- iOS runtime讲解,并且用runtime动态归档与解档
- iOS中对象属性的归档和解档(runtime+KVC)快捷解决方案
- iOS nscoding 实现归档解档
- iOS运行时实现归档解档
- 使用runtime归档模型对象
- 利用runtime进行归档解档
- 学习笔记1:归档解档、runtime
- 利用objc runtime 和 KVC 对自定义对象归档解档
- IOS利用objc/runtime和KVC——快速归档解档
- 利用Runtime 实现自动化归档
- 每个程序员都应牢记的7种坏味道,11种原则,23种模式
- asp.net core mvc实现伪静态功能
- Go语言错误与异常处理机制
- Vim插件之python-mode
- Xcode快捷键
- ios 对象归档解档 runtime实现
- Spark读取配置
- char2Wchar,Wchar2char,互转
- asp.net core mvc剖析:启动流程
- h5的沙盒文件系统
- centos7 分区 格式化
- asp.net core mvc权限控制:在视图中控制操作权限
- Sublime Text3 插件安装失败解决方案
- 数组中出现次数超过一半的数字(Java实现)