Realm 中的RLMObject解析
来源:互联网 发布:windows网络编程第二版 编辑:程序博客网 时间:2024/05/29 08:00
Objective‑C版本的 Realm 能够让您以一种安全、耐用以及迅捷的方式来高效地编写应用的数据模型层!
最近在项目中用到了Realm框架进行数据存储,在这里和大家分享一下在运用中遇到的问题!
RLMObject 解析
相信很多朋友会遇到,用MJExtension等解析框架解析不了继承于RLMObject的对象,其实这主要是继承于RLMObject的对象 获取的类名方法不一样了;
平时我们也许是这样获取一个对象的类名的:
[object class];
但是如果继承于RLMObject的对象也用这个方法获取类的话,就不行了,例如:
#import <Realm/Realm.h>#import "HDDog.h"@interface HDUser : RLMObject@property NSString *userid;@property NSString *user_name;@property RLMArray <HDDog*><HDDog>*dogs;@end
HDUser *user = [[HDUser alloc]init];user.userid = @"2";user.user_name = @"解析";NSLog(@"%@",[user class]);
打印结果为:
那么我们要用什么方法去获取类名呢?
其实RLMObject提供了一个方法给我们去获取这个对象的类名;
因此我们可以这样获取:
NSLog(@"%@",[[user class] className]);
打印结果为:
最后我们可以通过runtime解析
#import "RLMObject+HDJson.h"#import <objc/runtime.h>@implementation RLMObject (HDJson)#pragma mark -模型转字典-(NSMutableDictionary*)hd_keyValues{ NSMutableDictionary *propertyDic = [NSMutableDictionary dictionaryWithCapacity:0]; unsigned int outCount; //获取对象的属性列表 objc_property_t *properties = class_copyPropertyList(NSClassFromString([[self class] className]), &outCount); for (int i = 0; i < outCount; i++) { NSString *name = [NSString stringWithCString:property_getName(properties[i]) encoding:NSUTF8StringEncoding]; id value = [self valueForKey:name]; if (value) { if ([value isKindOfClass:[RLMArray class]]) {//判断是否是数组 //模型数组转字典数组成 [propertyDic setObject:[self hd_keyValuesArrayWithObjectArray:value] forKey:name]; }else{ [propertyDic setObject:value forKey:name]; } } } free(properties); return propertyDic;}#pragma mark - 模型数组 -> 字典数组-(NSMutableArray*)hd_keyValuesArrayWithObjectArray:(NSArray *)objectArray{ NSMutableArray *array = [[NSMutableArray alloc]init]; for (RLMObject *obje in objectArray) { [array addObject:obje.hd_keyValues]; } return array;}
如果有需要可以下载demo: https://github.com/LiuHengye/RealmJson
阅读全文
0 0
- Realm 中的RLMObject解析
- Tomcat中的Realm
- 关于Shiro中的Realm
- Android Realm数据库完美解析
- Android Realm数据库完美解析
- Android Realm数据库完美解析
- 对sip中的realm理解
- Realm多线程中的那些坑...
- 6、 Shiro中的自定义Realm
- realm
- Realm
- Realm
- realm
- Realm
- realm
- Realm
- Tomcat 7 中的 JDBC Realm 配置
- shiro中的自定义realm支持md5
- MyBatis(5):MyBatis集成Spring事务管理(上)
- 1.2 c++_语句
- SDRAM和重定位
- 熊市学技术—《挖矿=POW=工作量证明》
- Linux安全基础知识
- Realm 中的RLMObject解析
- 使用Platium库开发dlna投屏功能
- c#和lua的反射
- HUD 1029 Ignatius and the Princess IV
- angularjs书架
- 僵尸进程的解决方法
- oracle之 监听器无法启动的几个原因总结
- Leetcode算法学习日志-647 Palindromic Substrings
- 第3周项目2- 顺序表的基本运算