举例:

首先定义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反射读取实体属性和值的更多相关文章

  1. .net 读取实体属性和描述注释

    .net 读取实体属性和描述注释 class Program { static void Main(string[] args) { TEST test = new TEST(); test.MyNa ...

  2. C# 反射 设置实体属性

    C# 反射 设置实体属性 http://blog.csdn.net/cestarme/article/details/6548126 C#反射设置属性值和获取属性值 http://www.cnblog ...

  3. java反射对实体类取值和赋值

    public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...

  4. C#中使用反射遍历一个对象属性和值以及百分数

    对某个类的实例化对象, 遍历获取所有属性(子成员)的方法(采用反射): using (var context = new YZS_TRAEntities()) { ).FirstOrDefault() ...

  5. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~

    项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...

  6. C# 并行 反射 去掉实体属性多余空格

          有时会遇到很多不合理的数据附件到实体后有大量空格需要处理,这里提供一个方法,通过并行反射的方式高效清理空格.   Code: //清除字符串空格 public static object ...

  7. C# -- 把json字符串转为对象并读取各属性的值

    前面2种方法是不需要声明一个Json字符串的类型即可把Json字符串转换为Dictionary对象 而第3种方法则是声明一个Json字符串的强类型对象,然后反序列化为该对象的数据. List<, ...

  8. js为一个对象Object添加一个新的属性和值

    1, var obj = {}; //或者 var obj=new Object(); var key = "name"; var value = "张三丰" ...

  9. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

随机推荐

  1. docker基于宿主机系统版本创建镜像

    这里讲如何定制自己centos镜像,仅供测试docker使用. A) 安装软件 yum -y install febootstrap B)下载镜像febootstrap -i bash -i wget ...

  2. selenium+python中,框架中,怎么返回上一个菜单

    /退回上一级表单 driver.switchTo().defaultContent();

  3. DataTable批量插入数据库

    最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...

  4. deleteMany is not a function

    问题: 同事使用了deleteMany方法用于删除数据,但是全公司只有我一个人报错deleteMany is not a function. 很自然,输出了model.deleteMany,得到的结果 ...

  5. SQLServer 微软团队开源项目 (web 版?)

    http://www.codeplex.com/site/users/view/SQLTeamAdmin

  6. H.264有四种画质级别

    H264相关知识-poseidonqiu-ChinaUnix博客 H.264有四种画质级别分别是BP.EP.MP.HP: 1.BP-Baseline Profile:基本画质.支持I/P 帧,只支持无 ...

  7. F - 棋盘问题

    F - 棋盘问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  8. <c和指针>学习笔记1之快速上手和基本概念

    1 c语言中的注释 功能:使这段代码在程序中不起作用,当然如果是功能注释,那是方便其他人阅读您的代码. 大部分情况下,多行的注释,我们采用的是这种方式,例如  /*内容*/. 这个符号不能嵌套,也就是 ...

  9. vim跳转到文件的指定偏移位置

    :goto 偏移量 例如:偏移到文件的第100个字节处 :goto 100

  10. POJ - 2377 Bad Cowtractors Kru最大生成树

    Bad Cowtractors Bessie has been hired to build a cheap internet network among Farmer John's N (2 < ...