美文网首页iOS资料汇总iOS进阶
通过runtime完成本地数据持久化

通过runtime完成本地数据持久化

作者: 夜千寻墨 | 来源:发表于2015-11-24 20:26 被阅读333次

通过runtime,不管模型有多少属性,通过几句代码就能完成。

假设person类有N多个属性而是(这里随便写3个)

.h

#import

@interfacePerson : NSObject

@property(nonatomic, assign) intage;

@property(nonatomic, assign) intheight;

@property(nonatomic, copy)NSString*name;

@end

.m

#import "Person.h"

#import

#import

@implementationMJPerson

- (void)encodeWithCoder:(NSCoder *)encoder

{

unsignedint count = 0;

Ivar *ivars =class_copyIvarList([Personclass], &count);

for (int i = 0; i

//取出i位置对应的成员变量

Ivar ivar = ivars[i];

//查看成员变量

constchar *name =ivar_getName(ivar);

//归档

NSString *key = [NSStringstringWithUTF8String:name];

id value = [selfvalueForKey:key];

[encoderencodeObject:valueforKey:key];

}

free(ivars);

}

- (id)initWithCoder:(NSCoder *)decoder

{

if (self = [superinit]) {

unsignedint count = 0;

Ivar *ivars =class_copyIvarList([Personclass], &count);

for (int i = 0; i

//取出i位置对应的成员变量

Ivar ivar = ivars[i];

//查看成员变量

constchar *name =ivar_getName(ivar);

//归档

NSString *key = [NSStringstringWithUTF8String:name];

id value = [decoderdecodeObjectForKey:key];

//设置到成员变量身上

[selfsetValue:valueforKey:key];

}

free(ivars);

}

returnself;

}

@end

这样写完后,不管属性的多少,runtime都能够完成模型属性的归档与解档,是不是很方便呢。

当然,还可以把.h和.m里面的代码抽成宏,这样以后想要实现复杂对象的存储只需要写两行代码就能搞定。

相关文章

  • 通过runtime完成本地数据持久化

    通过runtime,不管模型有多少属性,通过几句代码就能完成。 假设person类有N多个属性而是(这里随便写3个...

  • iOS本地数据持久化

    iOS本地数据持久化 iOS本地数据持久化

  • iOS本地数据持久化

    转载自:CocoaChina - iOS本地数据持久化 本文内容:iOS本地数据持久化的几种类型iOS本地数据持久...

  • iOS本地数据持久化

    本文内容: iOS本地数据持久化的几种类型 iOS本地数据持久化几种类型的应用场景及使用 一.iOS本地数据持久化...

  • iOS 数据持久化

    iOS本地数据持久化 本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一.i...

  • iOS本地数据持久化

    本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一,iOS本地数据持久化的类...

  • ios数据持久化

    本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一.iOS本地数据持久化的类...

  • GeekBand iOS开发高级进阶学习笔记(第四周)

    简易数据存储 数据持久化分为本体持久化和云端持久化本体持久化可以存在本地文件或数据库。云端可以存在iCloud,存...

  • iOS 数据本地化(开篇)

    iOS Application的文件目录: 何为数据本地化? 数据本地化:又名持久化,存储在磁盘本地当中。 为何要...

  • Android数据持久化之数据库的使用

    android开发中数据持久化 轻量级数据持久化一般使用sp,大量数据的持久化就必须考虑使用本地数据库了 Andr...

网友评论

    本文标题:通过runtime完成本地数据持久化

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