OC序列化
来源:互联网 发布:舒适图标知乎 编辑:程序博客网 时间:2024/06/11 02:41
//
// Person.m
// --OC序列化
// Copyright © 2017年 TZ. All rights reserved.
// 在Runtime眼里没有私有!!!
#import "Person.h"
#import <objc/message.h>
@interface Person()
@end
@implementation Person
- (void)encodeWithCoder:(NSCoder *)coder
{
unsignedint count = 0;
Ivar * ivars =class_copyIvarList([Personclass], &count);
for (int i =0; i < count; i++) {
//拿出属性的名称
Ivar ivar = ivars[i];
constchar * name = ivar_getName(ivar);
NSString * KEY = [NSStringstringWithUTF8String:name];
//取出属性的值
id value = [selfvalueForKey:KEY];
//归档
[coder encodeObject:valueforKey:KEY];
}
//c语言里面需要释放指针!!
free(ivars);
}
//解档!!
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [superinit];
if (self) {
unsignedint count = 0;
Ivar * ivars =class_copyIvarList([Personclass], &count);
for (int i =0; i < count; i++) {
//拿出属性的名称
Ivar ivar = ivars[i];
constchar * name = ivar_getName(ivar);
NSString * KEY = [NSStringstringWithUTF8String:name];
//解档
id value = [coderdecodeObjectForKey:KEY];
//将值设置到属性上 KVC
[selfsetValue:value forKey:KEY];
}
//c语言里面需要释放指针!!
free(ivars);
}
returnself;
}
@end
- OC对象序列化
- OC序列化
- OC-本地化操作(序列化,归档)
- 【Objective-C】OC中对象归档(序列化)的基本概念和用法
- 什么是序列化和反序列化,可以用来做什么?如何在OC中实现复杂对象的存储
- OC数据持久化
- Oc Plist 持久化
- oc
- oc
- OC
- OC
- OC
- oc
- oc
- oc
- OC
- OC
- oc
- NDK编译——独立工具链
- 配置Nodejs
- Mac-记录一些超好用的快捷键
- 使用Aspose.cells实现Excel转换为pdf
- Eclipse安装JD-Eclipse反编译插件
- OC序列化
- ThreadPool
- 全排列及相关扩展算法(一)——基础的回溯递归实现全排列算法
- python调用NESSUS API以实现自动化扫描
- Unity 物理系统--射线
- leetcode#17. Letter Combinations of a Phone Number
- POJ 1704 Georgia and Bob ( 阶梯博弈 模板 )
- jQuery闭包之浅见...
- Codeforces 428(div 2)B. Game of the Rows(思维题)