Object-C反射读取实体属性和值
举例:
首先定义TestModel如下:
@interface TestModel : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *desc;
@property (nonatomic, assign) int age;
@end
然后在viewControl中viewDidLoad中添加如下代码
TestModel *model = [[TestModel alloc] init];
model.name = @"Jack";
model.age = 30;
model.desc = @"some thing right";
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([model class], &outCount);
for (i=0; i<outCount; i++) {
objc_property_t property = properties[i];
const char *propertyName = property_getName(property);
const char *propertyAttribute = property_getAttributes(property);
NSString *name=[NSString stringWithCString:propertyName
encoding:NSUTF8StringEncoding];
NSString *attribute=[NSString stringWithCString:propertyAttribute
encoding:NSUTF8StringEncoding];
id value = [model valueForKey:[NSString stringWithUTF8String:propertyName]];
NSString * key = [[NSStringalloc]initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
NSLog(@"%@==%@\n",name,attribute);
NSLog(@"property[%d]:%@ value:%@\n", i, key, value);
}
执行结果如下:
2014-03-01 05:35:38.560 snippet[7267:70b] name==T@"NSString",&,N,V_name
2014-03-01 05:35:38.562 snippet[7267:70b] property[0]:name value:Jack
2014-03-01 05:35:38.562 snippet[7267:70b] desc==T@"NSString",&,N,V_desc
2014-03-01 05:35:38.563 snippet[7267:70b] property[1]:desc value:some thing right
2014-03-01 05:35:38.563 snippet[7267:70b] age==Ti,N,V_age
2014-03-01 05:35:38.564 snippet[7267:70b] property[2]:age value:30
欢迎光临~~
Object-C反射读取实体属性和值的更多相关文章
- .net 读取实体属性和描述注释
.net 读取实体属性和描述注释 class Program { static void Main(string[] args) { TEST test = new TEST(); test.MyNa ...
- C# 反射 设置实体属性
C# 反射 设置实体属性 http://blog.csdn.net/cestarme/article/details/6548126 C#反射设置属性值和获取属性值 http://www.cnblog ...
- java反射对实体类取值和赋值
public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...
- C#中使用反射遍历一个对象属性和值以及百分数
对某个类的实例化对象, 遍历获取所有属性(子成员)的方法(采用反射): using (var context = new YZS_TRAEntities()) { ).FirstOrDefault() ...
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- C# 并行 反射 去掉实体属性多余空格
有时会遇到很多不合理的数据附件到实体后有大量空格需要处理,这里提供一个方法,通过并行反射的方式高效清理空格. Code: //清除字符串空格 public static object ...
- C# -- 把json字符串转为对象并读取各属性的值
前面2种方法是不需要声明一个Json字符串的类型即可把Json字符串转换为Dictionary对象 而第3种方法则是声明一个Json字符串的强类型对象,然后反序列化为该对象的数据. List<, ...
- js为一个对象Object添加一个新的属性和值
1, var obj = {}; //或者 var obj=new Object(); var key = "name"; var value = "张三丰" ...
- EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...
随机推荐
- docker基于宿主机系统版本创建镜像
这里讲如何定制自己centos镜像,仅供测试docker使用. A) 安装软件 yum -y install febootstrap B)下载镜像febootstrap -i bash -i wget ...
- selenium+python中,框架中,怎么返回上一个菜单
/退回上一级表单 driver.switchTo().defaultContent();
- DataTable批量插入数据库
最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...
- deleteMany is not a function
问题: 同事使用了deleteMany方法用于删除数据,但是全公司只有我一个人报错deleteMany is not a function. 很自然,输出了model.deleteMany,得到的结果 ...
- SQLServer 微软团队开源项目 (web 版?)
http://www.codeplex.com/site/users/view/SQLTeamAdmin
- H.264有四种画质级别
H264相关知识-poseidonqiu-ChinaUnix博客 H.264有四种画质级别分别是BP.EP.MP.HP: 1.BP-Baseline Profile:基本画质.支持I/P 帧,只支持无 ...
- F - 棋盘问题
F - 棋盘问题 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- <c和指针>学习笔记1之快速上手和基本概念
1 c语言中的注释 功能:使这段代码在程序中不起作用,当然如果是功能注释,那是方便其他人阅读您的代码. 大部分情况下,多行的注释,我们采用的是这种方式,例如 /*内容*/. 这个符号不能嵌套,也就是 ...
- vim跳转到文件的指定偏移位置
:goto 偏移量 例如:偏移到文件的第100个字节处 :goto 100
- POJ - 2377 Bad Cowtractors Kru最大生成树
Bad Cowtractors Bessie has been hired to build a cheap internet network among Farmer John's N (2 < ...