美文网首页
利用runtime进行归档和反归档

利用runtime进行归档和反归档

作者: 乡村武装青年 | 来源:发表于2015-12-24 21:52 被阅读75次

项目中如果有个一个复杂对象需要进行本地序列化的时候我们势必要写这样的代码:
#define SomeKey1@"somekey1"

#define Somekey2 @"somekey2"

#define Somekey3 @"somekey3"

//归档

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.some forKey:SomeKey1];

[aCoder encodeObject:self.CUSTSTATUS forKey:SomeKey2];

[aCoder encodeObject:self.PICTUREID forKey:SomeKey3];

}

// 解档

- (id)initWithCoder:(NSCoder *)decoder

{

if(self = [super init]) {

self.some1 = [decoder decodeObjectForKey:SomeKey1];

self.some2 = [decoder decodeObjectForKey:SomeKey2];

self.some3 = [decoder decodeObjectForKey:SomeKey3];

}

returnself;

}

当只有三个属性的时候还比较简单,但是如果更多呢,势必需要写重复的代码.不要重复,不要重复自己,千万不要重复自己.所以我打算用runtime运行时获取类的所有属性的这个特性完成归档和反归档.

具体代码如下:

这样就完成复杂对象的序列化.

使用起来也很放便,直接在你的model的.m文件中 写入WHYCodingImplementation这个宏定义

然后下面是测试结果:

相关文章

网友评论

      本文标题:利用runtime进行归档和反归档

      本文链接:https://www.haomeiwen.com/subject/yywvhttx.html