iOS反射机制
来源:互联网 发布:开淘宝店卖虚拟产品 编辑:程序博客网 时间:2024/05/22 06:16
iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值。(注意:对象的类,如果是派生类,就得靠其他方式来实现了,因为得到不该基类的属性。)
本人常用的反射方式,有如下两种:
- 从一个自定义实体类->自定义实体类
- 从一个NSDictionary->自定义实体类(此方式最最常用,如网络Json数据会组成NSDictionary。sqlite查询数据,可以用第三方组件组成NSDictionary)
- (NSArray*)propertyKeys
{
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
NSMutableArray *keys = [[NSMutableArrayalloc] initWithCapacity:outCount];
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyName = [[NSStringalloc] initWithCString:property_getName(property)encoding:NSUTF8StringEncoding];
[keysaddObject:propertyName];
}
free(properties);
return keys;
}
- (BOOL)reflectDataFromOtherObject:(NSObject*)dataSource
{
BOOL ret = NO;
for (NSString *keyin [self propertyKeys]) {
if ([dataSource isKindOfClass:[NSDictionaryclass]]) {
ret = ([dataSourcevalueForKey:key]==nil)?NO:YES;
}
else
{
ret = [dataSourcerespondsToSelector:NSSelectorFromString(key)];
}
if (ret) {
id propertyValue = [dataSource valueForKey:key];
//该值不为NSNULL,并且也不为nil
if (![propertyValue isKindOfClass:[NSNull class]] && propertyValue!=nil) {
[selfsetValue:propertyValue forKey:key];
}
}
}
return ret;
}
NSDictionary *dicJsonData;
EntityObject *objValue;
[objValuereflectDataFromOtherObject:dicJsonData];//这样就可以完成对象的自动赋值了,
//你还在使用
objValue.value = [dicJsonDataobjectForKey:@"value"];//out了
- iOS反射机制
- iOS实现反射机制
- iOS实现反射机制
- iOS反射机制
- IOS 反射机制
- iOS反射机制
- iOS反射机制
- iOS反射机制
- iOS反射机制--1.属性反射
- ios中的动态反射机制
- iOS反射机制: objc_property_t的使用
- iOS反射机制: objc_property_t的使用
- IOS反射机制的几个重要函数
- iOS反射机制: objc_property_t的使用
- iOS开发—巧用反射机制
- iOS开发:Object-C的反射机制
- iOS 开发--Objective-C 反射机制
- [iOS]Swift-反射机制及KVC
- 相遇
- 非结构化数据时代 EMC引领行业IT变革
- ubuntu 启动分析 & 定制ubuntu: 让 ubuntu 使用自己编译 linux kernel
- 鼓励合作共赢 高新区召开IT企业座谈会
- 成都IT云图:安逸生活撞上十倍速度
- iOS反射机制
- DllMain函数
- 深入linux设备驱动程序内核机制(第四章) 读书笔记
- 一步步构建大型网站架构
- 美国IT巨头否认 当“眼线”窥探隐私
- Arduino Upload失败
- Oracle体系结构及备份(八)——sga-log_buffer
- 揭开宏的神秘面纱:什么是宏,为什么使用宏?
- 美政府用IT公司搜集网民情报